快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

SQL查询的分页思路

假如用一般的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 < "&previd&" and contains(songtitle,\\\'"&songname&"\\\') order by id desc"\\\'previd最小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查询得心得.
返回类别: 教程
上一教程: MYSQL进阶SELECT篇
下一教程: 怎样在PHP中通过ADO调用ASSCESS数据库和COM程序

您可以阅读与"SQL查询的分页思路"相关的教程:
· MYSQL 查询中的分页思路的优化
· 利用MYSQL的一个特性实现MYSQL查询结果的分页显示
· SQL SERVER 2005提供的分页查询支持
· MYSQL常用查询的例子
· MYSQL让存储结果分页,用于复杂查询
    微笑服务 优质保证 索取样品