查询时需要根据时间字段进行范围查询,timestamp类型。语句没有子查询、关联查询,只查这一张表。
查出5万条结果大约需要4.5秒,这个字段已经加了普通索引,但是explain的类型还是ALL。
怎么优化?
语句是between and。换了>=和<=查询需要的时间也差不多。
SELECT id,name,sex,city,headimg FROM user WHERE starttime >='2018-05-15' AND starttime <= '2018-07-27 23:59:59' ORDER BY starttime DESC
看看你表的数据量是多少,如果很多,上万级别的,就算时间加了索引了也会很慢的。
某些情况下,由于数据量大,mysql 认为全表扫描反而快就不适用索引了。
你的这个sql可以优化下:
不要一次性返回很多的数据,如果数据多,分多次获取,其实mysql 处理sql查询很快的,时间主要耗在发起连接或回传数据(5万条数据很大了)上了,给你的感觉怎么sql执行这么慢。