答案是代码二远远高于代码一。在代码一中加粗代码的操作会引起整表扫描,因为数据库引擎在认为WHERE表达式中满足条件记录大于一定阀值的时候,就不再去进行查询优化,而直接使用表扫描。看执行信息,: 表 'news'。扫描计数 1,逻辑读取 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 ( 行受影响) (1 行受影响) ( 行受影响) 表 '#tb________________________________________C'。扫描计数 1,逻辑读取 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 表 'news'。扫描计数 1,逻辑读取 次,物理读取 0 次,预读 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 (1 行受影响) (1 行受影响) 原本,我想的执行计划,加粗部分的代码应该是聚焦索引查找,这样性能就提高很多。看代码二: 表 'news'。扫描计数 1,逻辑读取 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 ( 行受影响) (1 行受影响) 表 '#tb____________________________________BEEF'。扫描计数 1,逻辑读取 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 ( 行受影响) (1 行受影响) ( 行受影响) 表 'news'。扫描计数 0,逻辑读取 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 表 '#tb2___________________________________BEF0'。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。 (1 行受影响) (1 行受影响) 很明显,代码二与代码一中的IO操作数大大降低。且代码一随着@PageIndex越来越大,效率会越来越低;但代码二的效率不会随@PageIndex变化而改变。
推荐整理分享sqlserver关于分页存储过程的优化【让数据库按我们的意思执行查询计划】(sql server分页查询sql语句),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sqlserver分页语句,sqlserver分页语句,sqlserver2000分页,sqlserver2008分页,sqlserver2000分页,sqlserver2008分页,sqlserver的分页,sqlserver的分页,内容如对您有帮助,希望把文章链接给更多的朋友!
sqlserver清空service broker中的队列的语句分享 USETestDBdeclare@conversationuniqueidentifierwhileexists(select1fromsys.transmission_queue)beginset@conversation=(selecttop1conversation_handlefromsys.transmission_queue)endconversation@conversationwi
SQL学习笔记一SQL基础知识 常用字段类型bit(0和1),datetime,int,varchar,nvarchar(可能含有中文用nvarchar)Varchar,nvarchar和char(n)的区别char(n)不足长度n的部分用空格填充。SQL语
SQL学习笔记二 创建表、插入数据的语句 创建一个表T_Employee并插入若干数据createtableT_Employee(FNumberVARCHAR(),FNameVARCHAR(),FAgeint,FSalaryNUMERIC(,2),PRIMARYKEY(FNumber));insertintoT_Employee(FNumber,FName,FAge,FSalar