- 数据总量的多少对于单表查询来说影响不大(在查询条件有索引的情况下),真正影响单表查询的主要因素在与查询获得的数据量(列数)和需要计算的数据量。
- 在联合查询中,数据总量对于查询速度的影响要比单表查询大很多。
- 查询条件中影响查询速度的不只是索引,还与查询条件中的数量有关。
例如某一列类型为字符串,但只有"0"
,"1"
两种可能,以该列为查询条件,即便没有索引,其查询速度也是非常快的。(在查询结果相同的情况下,该列查询速度比带有索引的id列还要快不少) - 在查询结果外嵌套一个
group by
查询会增加 50% ~ 100% 的查询时间。 - 使用嵌套查询来代替内连接并不能有效的提高查询速度,反而会在一定程度上拖慢查询速度。
- 今天查一个数据量有上亿的一张表,已知create_time字段有索引。
- 当使用查询条件where create_time > ? order by id limit 1 时特别快,大概0.8秒。但是老数据时间有误,有的特别大,不能这么查。
- 但是当使用查询条件where create_time > ? and create_time < ? order by id limit 1 时,却花费了7分钟,原因未知。
- 最后我这边不得不使用自增id去代替,where create_time > ? and id > ? order by id limit 1。查询时间0.5秒。
MySQL 查询性能总结
最新推荐文章于 2025-03-23 11:55:59 发布