Mysql 8.0问题查询结果快,但插入慢

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

我从一张20GB的数据表A中查询,查询结果是4万行数据。我的查询是“从 A 中选择不同的 custid,其中‘2022-01-01’位于 col1 和 col2 之间。”由于col1和col2都建立了索引,所以我可以在短短3秒内获取全部40,000行数据。然而,当我想将此结果插入表 B 时,查询变成“insert into table B select different custid from A where '2022-01-01' is between col1 and col2”,花了 5 分钟。这是什么原因呢?

5分钟是一次全表扫描所需的时间。

当我添加“插入”操作时,SELECT 语句的“EXPLAIN”结果中的“类型”从“范围”更改为“全部”。

mysql sql-insert
1个回答
0
投票

MySQL优化器认为插入时使用索引可能会降低效率,因此默认进行全表扫描。但是,当我使用FORCE INDEX时,插入速度显着提高,并且不再执行全表扫描。建议在适当的时候强制使用索引,而不是让优化器决定查询计划。

© www.soinside.com 2019 - 2024. All rights reserved.