mysql 创建索引后,查询速度没有提升

时间:2022-05-03 04:58:04

直接上结论:

mql查询语句的where条件字段和select查询字段需要在同一个索引中。

引申:

多表查询时,where条件涉及的大表字段、select中的大表字段和left join的大表字段要在同一个索引中。


首先声明,本人才学疏漏,本文即兴写作,不一定对,更不一定深。

我们项目使用mysql作为数据库,在单表达到百万级别以后,经常发现大表查询速度难以忍受,达到半分钟到5分钟左右。尝试在大表添加了索引,查询速度依然没有提升。

后测试发现,索引添加和查询配合才能出效果。

表结构t1:

id, name, time

sql1:

select * from t1 where time > t1 and time < t2;

无索引时,查询速度在几分钟。

添加time字段索引,查询时间依然是几分钟。

添加time索引,sql1编程sql2:

select time from t1 where time > t1 and time < t2;

执行sql2,查询时间是秒级别。