[英]SQL Where in: better use a static array or a select?
我有一個MySQL數據庫,需要刪除表father
的某些條目,但是在表father
和child
表之間有一些FK的限制,為此,我必須從child
表中刪除,然后從表中刪除father
桌。 我有:
DELETE FROM child WHERE child.id IN (SELECT id FROM father);
我想知道,如果我使用過,它是否會有性能變化(除了額外的選擇)
DELETE FROM child WHERE child.id IN (1,2,...,n)
1,2 ... n的結果與“從父親選擇ID”的結果相同。
使用多表DELETE比任何一種都快:
DELETE FROM child
USING father JOIN child
ON child.id = father.id;
不應該是child.father_id
嗎? 不,那似乎是錯誤的??
這似乎更接近您的英語:
DELETE FROM child
USING father JOIN child
ON child.father_id = father.id -- more likely FK
WHERE father...; -- picking the Dads in question
DELETE FROM father
WHERE father...; -- picking the Dads in question
ON DELETE CASCADE
可能會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.