用于SQL查询的MySQL Performace调优

问题描述 投票:1回答:1

[有人可以帮助我重写查询以加快执行时间吗?花费了[[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字段上创建了一个索引。感谢您的时间。
mysql sql performance query-optimization sql-delete
1个回答
0
投票
查询看起来很好。

我建议以下索引进行优化:

master(expiry_date, userid) storefront_categories(userid)

第一个索引是master上子查询的

covering索引:这意味着数据库应该仅通过查看索引即可执行子查询(而索引中只有expiry_date,它仍然需要查看表数据以获取相关的userid)。

第二个索引使数据库优化in操作。
© www.soinside.com 2019 - 2024. All rights reserved.