Delete-Related-Table.md

Translated by ChatGTP

MySQL 刪除相關表格

使用 where inexists 取決於資料表大小和查詢中的索引檢查。

說明從delete_related_table_member_tags關係表中刪除,其標籤ID
在(選擇從delete_related_table_tags標籤中的ID where tag.type = 'A'

說明從delete_related_table_member_tags刪除關係
在(選擇從delete_related_table_tags標籤中的ID where tag.id = relation.tag_id tag.type = 'A'

說明從delete_related_table_member_tags刪除關係
inner join delete_related_table_tags標籤
where relation.tag_id = tag.id tag.type = 'A';
idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra
1簡單tagnull參考主要,typetype1022const2496048100使用索引
1刪除關係null參考tag_idtag_id4test.tag.id1100

實際考試方法

參見檔案 playground/laravel/app/Console/Commands/MySQLDeleteRelatedTable.php

結果


/**
 * test_type_without_id_type_index
 *
 * ---deleteFromWhereIn start---
運行時間:41.261170148849秒
---deleteFromWhereIn end----
---deleteFroWhereExists start---
運行時間:41.044189929962秒
---deleteFroWhereExists end----
---deleteFromJoin start---
運行時間:42.302510023117秒
---deleteFromJoin end----

 *
 *
 */

/**
 *
 * test_type_with_id_type_index
 *
 * ---deleteFromWhereIn start---
運行時間:41.456815004349秒
---deleteFromWhereIn end----
---deleteFroWhereExists start---
運行時間:42.01546216011秒
---deleteFroWhereExists end----
---deleteFromJoin start---
運行時間:39.968888044357秒
---deleteFromJoin end----

 *
 */

/**
 * test_type_with_id_type_index_and_force_index
 *
 * ---deleteFromWhereIn start---
運行時間:44.467664003372秒
---deleteFromWhereIn end----
---deleteFroWhereExists start---
運行時間:39.107469081879秒
---deleteFroWhereExists end----
---deleteFromJoin start---
運行时间:62.701831102371秒
---deleteFromJoin end----

 */