SQL 在哪里:最好使用静态数组还是 select?

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

我有一个 MySQL 数据库,我需要在其中删除 table father 的一些条目,但是我的 table 之间有一些 FK 有限制father 和 table child,为此,我必须从 child table 中删除,然后从 father [=28] 中删除=]. 我有:

DELETE FROM child WHERE child.id IN (SELECT id FROM father);

我想知道,如果我使用

,它是否会有性能变化(除了额外的 select)
DELETE FROM child WHERE child.id IN (1,2,...,n)

其中 1,2...n 与 'SELECT id FROM father' 的结果相同。

使用 multi-table 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可能会稍微快一些。