【发布时间】:2011-02-24 20:43:50
【问题描述】:
根据某些标准,我必须从包含超过 1 亿行的表中删除大约 10K 行。当我执行查询时,大约需要 5 分钟。我运行了一个解释计划(delete 查询转换为select *,因为 MySQL 不支持explain delete),发现 MySQL 使用了错误的索引。
我的问题是:有没有办法告诉 MySQL 在删除期间使用哪个索引?如果没有,我该怎么办?选择到临时表然后从临时表中删除?
【问题讨论】:
-
确保您有一个主键,并且您的删除的 WHERE 子句中命名的列已编入索引。
标签: mysql query-optimization sql-delete sql-execution-plan