Home >Database >Mysql Tutorial >SQL查询的分页思路_MySQL

SQL查询的分页思路_MySQL

WBOY
WBOYOriginal
2016-06-01 13:56:13813browse

    如果用一般的SELECT *  查询SQL数据库,然后用recordset进行分页的话,在返回结果很多的情况下将会是一个漫长的过程,而且很消耗内存.你可能会有感觉,用access也比SQL快.

    其实我们可以只取出我们每页需要显示的记录数,这样的速度是惊人的,非常快.这里我们会用到聚集索引来快速确定我们需要取出的记录数的位置.如下面:

  if p>1 then 'p为PAGE页数

    if n="next" then'下一页
  sql="select top 26 * from song1 where  id  > "&pk&"  and contains(songtitle,'"&songname&"')"  'PK为当前页的最大ID数
    elseif n="prev" then'上一页
  sql="select top 26 * from song1 where  id      end if
else
  sql="select top 26 * from song1 where contains(songtitle,'"&songname&"')"'没有指定PAGE值,默认第一页
end if

    这里用到了全文检索,速度也是很快的,我在52万记录下测试,最快可以46MS(机器C1.7.  DDR 256M),感觉比较可以,我用like代码模糊查询页测试过,在结果集很多的情况下比全文更快,但是如果结果很少(整个表只有那么几条)将是漫长的过程,因为要对全表进行扫描!

    按上面的方法不能得出所查询结果得总记录数,这里我们可以用select count(*) 来获取记录总数,速度页还过得去,不过感觉要慢一截,特别是记录集很多得情况,不过这样占用得内存很小得.

    以上是我最近搞SQL查询得心得.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn