簡體   English   中英

SQL哪里:最好使用靜態數組或選擇?

[英]SQL Where in: better use a static array or a select?

我有一個MySQL數據庫,需要刪除表father的某些條目,但是在表fatherchild表之間有一些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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM