我有一个很大的每日数据提要,最多可以包含大约 5,000 个 ID。我需要删除新提要中未引用的数据库中所有预先存在的记录。我应该为这 5,000 个 ID 创建一个临时表,然后运行 LEFT JOIN IF NULL DELETE 语句吗?或者,如果我只是传递 ID 并运行 DELETE IF NOT IN 语句,是否都一样。我的假设是 MySQL 会在使用 IN 语句时为我创建临时表。
我有一个很大的每日数据提要,最多可以包含大约 5,000 个 ID。我需要删除新提要中未引用的数据库中所有预先存在的记录。我应该为这 5,000 个 ID 创建一个临时表,然后运行 LEFT JOIN IF NULL DELETE 语句吗?或者,如果我只是传递 ID 并运行 DELETE IF NOT IN 语句,是否都一样。我的假设是 MySQL 会在使用 IN 语句时为我创建临时表。
对于大型集合,您可能希望使用
NOT EXISTS
子句而不是NOT IN
子句。如果您在 Feed 表中索引 id,这将有所帮助。使用索引将允许优化器使用索引而不是读取表。尝试这样的查询: