作者:chen人气:0来源:网吧系统下载站2014-04-02 10:17:23
方案:
◆1、SELECT TOP PAGESIZE NEWSTITLE
FORM NEWSINFO WHERE NEWSID NOT IN
(SELECT TOP (PAGE-1)* PAGESIZE NEWSID FROM NEWSINFO
WHERE Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC)
AND Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC
其中:PAGE表示当前页数,PAGESIZE表示页的大小;这里利用了NOT IN,不复合SARG,但总比一次读取全部的记录要好的多。
◆2、符合 SARG的代码
针对本人的实例还有一个更好的方案:因为NEWSID字段是自增字段,对于NOT IN 语句进行如下的改造,并不影响结果。但速度提高了很多
SELECT TOP PAGESIZE NEWSTITLE
FORM NEWSINFO WHERE NEWSID <
(SELECT MIN(NEWSID) FROM (SELECT TOP (PAGE-1) * PAGESIZE NEWSID FROM NEWSINFO WHERE Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC) AS TB)AND Auditing=1 and NEWSBREED='企业新闻' order by NEWSID DESC
说明
对于在多处使用分页功能的web 应用程序,把SQL语句改为存储过程将会更好。
2017-08-04Pubwin控制台打开报“错误代码179
2017-07-20MySQL数据库 v5.7.19 64位官方版
2017-07-20MySQL数据库管理工具 v5.7.19 32位官方版
2017-06-29Win10激活失败提示错误代码“0xc0000022”怎么解决?
2017-06-17纯真qqip数据库 v2017.06.15 绿色版
2017-06-12数据库备份恢复工具(DBTOOLS) v1.0 绿色版
2017-05-31“错误代码0xc000007b,缺少d3dx9_xx.dll/msvcp***.dll/msvcr***.dll”,Di
2017-05-09U盘安装Win7出现蓝屏代码该怎么处理