对于数据量比较大的表,比如千万级别的,很多情况会用到分页情况,大家自然而然想起了limit分页,但是当数据量足够大的时候,分页到了后面就会很慢。比如 select * from t_log limit 0, 200用了1秒,而select * from t_log limit 10000000,200 可能就是半分钟左右,所以这种大表的时候一般都会使用自增主键,这个时候就可以根据主键来分页,比如select * from t_log where id between 10000000 and 10000200, 这样查询200条的话只需要毫秒级的数据。
例子:SELECT * FROM rt_test_beat WHERE testid = 26 LIMIT 7000000, 200; 用时27.662秒
该表有testid 和 sampleindex 的联合索引
修改后的sql :SELECT * FROM rt_test_beat WHERE testid = 26 and sampleindex between 7000000 and 7000200 用时 0.006秒
提高了数量级的倍数, 该表一共有34083824 条数据