查询MySQL数据库的时候,select * from tablename where id>100000 limit 10;和select * from tablename limit 100000,10;的查询速度有很大的区别,好几倍的差距,这样在大量数据的时候会很慢,但是一张表里面的记录会被删除,所以用第一种语句就会出现误差,因为第一种是按id的值来查,第二种是按第几条记录来查,但是第二种太慢了,分页能分好几秒的,所以请教一下有没有比较折中的办法!拜谢。
调试欢乐多
这种实际上数据库是要遍历100010条记录的,当然慢了,做什么键值都没有用。要么你自己维护id分页记录,自己记录正确的第100000条记录的ID。要么你就尽可能的避免实现这样的功能。
更改表类型为MYISAM要快好多,我以前测试过的
alter table equip_article type=MyISAM
lz试试!
select * from tablename where id>100000 limit 10;#这个当然快,使用了索引id.这种情况,平衡树查找,可别表扫描快多了.迅速找到>10000的节点起始点,顺序取10条
select * from tablename where limit 100000,10;#至少扫描100010条记录,所以慢.
根据不同应用可以有很多种优化方案
例如做目录,在千万级数量以下
可以定时重建 INDEX, 加入一个新字段或表
生成顺序id, 查询时使用这个新id就很快了所以用途不同,优化方法分别很大