用
select * from news
这个到是挺快的。就算在后面加where条件也很快,一般是几十毫秒到,百毫秒就完事了。可是用
select * from news limit 1230000 ,30
就是十几秒了。
前面翻页挺快的,越到后面越慢。
这有办法解决吗?我看过phpwind的百万楼翻页,那速度是相当的快啊。不知他用的是什么技术。
select * from news
这个到是挺快的。就算在后面加where条件也很快,一般是几十毫秒到,百毫秒就完事了。可是用
select * from news limit 1230000 ,30
就是十几秒了。
前面翻页挺快的,越到后面越慢。
这有办法解决吗?我看过phpwind的百万楼翻页,那速度是相当的快啊。不知他用的是什么技术。
例如:
where ID>n and ID<n+31
比如id=100id>100 and id<130
但100~130中间我删除了120-125的ID记录,那么我只能得到25条记录,这怎么办?
没办法, limit 400,20, 是一定要先取过前 400 个然后才取 20 个返回的。所以等于处理 420 条记录如果你的记录很多。一种算法就是通过二分法定位哪里是这 第 400 条记录。一种常用的基于ID算法是。 假设没有删除,则 N 应该 是在ID=N的这条记录上, select count(*) from table1 where id <=N; 得到数字M, 如果M =n 则可以用 select * from talbe where id>m order by id limit 10;如果 M < N ,(假设条件下 M 不会大于N的。因为只有删除的时候会对ID有影响)
则 N = 2N-M,然后再取 M=count(*) where id < n 直到 M=n