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
可能会稍微快一些。
我有一个 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
可能会稍微快一些。