【发布时间】:2020-02-19 11:07:48
【问题描述】:
谁能帮我重新编写查询以加快执行时间?执行时间 37 秒。
DELETE FROM storefront_categories
WHERE userid IN (SELECT userid
FROM MASTER
where expirydate<'2020-2-4'
)
同时,这个查询只用了 4.69 秒就执行完毕。
DELETE FROM storefront_categories
WHERE userid NOT IN (SELECT userid FROM MASTER)
storefront_categories 表有 97K 条记录,而 MASTER 表有 40K 条记录。我们在 MASTER.expirydate 字段上创建了一个索引。
【问题讨论】:
-
如果要删除的记录太多,可以批量使用(除了加索引加快查询)。即,在查询中附加一个限制,例如“LIMIT 1000”。
-
你要删除 40K 行吗?
-
否,应用 WHERE 条件删除后最多 10-20 条记录。
标签: mysql sql performance query-optimization sql-delete