随笔 - 2  文章 - 0 评论 - 49 trackbacks - 3

最新评论

共3页: 1 2 3 下一页 
Re:大数据量分页存储过程效率测试附代码 黄伟伟(huangweiwei) 2012-05-08 16:07  
查询条件有 ' 会出问题 比如 : 有什么解决方法[code=sql] declare @pageCount int declare @counts int declare @pageSize int declare @currPage int set @pageSize = 100 set @currPage = 2 exec Proc_Paging 'pageTest','*',@pageSize,@currPage,'id',0, ' col02 like '0%' ', 'id',0,@pageCount output,@counts output select @pageCount as pageCount,@counts as counts [/code]
如果不按主键排序,那排序出来的东西 只有第一页是正确的,我测试了半天才找到原因。
在方法2中,如果不能对id做max操作,方法不就失效了????
分页,参见: [url=http://www.cnblogs.com/huyong/archive/2010/12/18/1910253.html]http://www.cnblogs.com/huyong/archive/2010/12/18/1910253.html[/url]
首先你写的使用RowNumber的方式并不是最高效的,为什么呢? select * from (select *,Row_number() over(order by ID asc) as IDRank from tb_testTable) as IDWithRowNumber where IDRank>@pageSize*@pageIndex and IDRank<@pageSize*(@pageIndex+1) 你的上面这段代码会一次从数据库中取出所有的数据,这样操作的数据量会很大,现在你的SQL是在聚集索引中执行的时候你根本看不到这种差别,一旦你是在非聚集索引中执行上述代码的时候你的查询就会非常非常慢,正确的做法应该是先取出ID,再根据主键来查数据,就像下面这样。 select a.* from tb_testTable as a inner join ((select ID,Row_number() over(order by ID asc) as IDRank from tb_testTable) as IDWithRowNumber where IDRank>@pageSize*@pageIndex and IDRank<@pageSize*(@pageIndex+1)) as b ON a.ID = a.ID order by b.IDRank 其次使用Max的方式是比较快,但是如果你是在数据不唯一的字段上排序的话可能会因为数据的重复导致这种排序不可用。 这点可以通过查看执行计划和执行统计信息就可以看出来,尤其是在使用非聚集索引的时候差别非常明显。
Re:大数据量分页存储过程效率测试附代码 我不是高手 2010-07-08 16:41  
@浪尘 请问楼主,如果需要JOIN其他表呢,效率排行是不是有所改变?
Re:大数据量分页存储过程效率测试附代码 我不是高手 2010-07-08 16:38  
楼主,太感谢您了,我正在找这个,用事实说话!我们PM要求用临时表,我喜欢用row_number()。请问楼主,如果需要JOIN其他表呢,效率排行是不是有所改变?
exec proc_paged_with_selectMax 'tb_testTable','ID,userName,userPWD,userEmail',100000,3,'ID',0,null,'ID',0 --利用select top 和 select max(列键) 消息 102,级别 15,状态 1,第 1 行 '*' 附近有语法错误。
为何我测试下来,利用top 的性能比 row_number 的性能好,特别是在前100页内。 我是对一个视图进行分页查询,该视图关联了好几个表。
re: 大数据量分页存储过程效率测试附代码 人生快乐人生 2009-06-04 10:58  
为什么 我的执行不了啊 博主帮帮忙
消息 208,级别 16,状态 6,过程 proc_paged_2part_selectMax,第 195 行
对象名 'proc_paged_2part_selectMax' 无效。
升序的时候查询不出记录。
顶博主!!谢谢喽!!学习中....
使用【2分法使用select max的代码】进行大数据分页的时候,发现传入的参数是最后几页的时候发现显示的记录不正确?麻烦楼主查看一下 很急,谢谢。
呵呵 这里的row_number似乎和oracle里面的row_number不同啊。
我原以为可以改成:
select *,row_number() over(order by id asc) as rows
from table where rows......
赞一个。。。
按其他字段排序时,根本就不对。
re: 大数据量分页存储过程效率测试附代码 我是一只鱼!!! 2008-10-09 09:41  
这个存储过程很不错,单表和多表联合都能够执行得很好, 只是有一个问题,那就是多字段排序的个时候,执行结果就不对了!
@xland



谢谢你的建议我们天在考虑中,因为他们公司的.net版听说不是太成熟,所以当时选了PHP版。我们正在测试其稳定性,如果可能我们会换掉的。

再次感谢
ps:玉米不错,羡慕中
@浪尘
如果你是其他的什么主题的论坛也就罢了
但是你的论坛是C#中国啊
如果有人来注册,一看程序居然是开源PHP
而且同一个公司有同样强大的开源的C#论坛
你说人咋想...
要有大发展,建议换代码,工作量应该不是很大
个人观点..
不错, 是得顶一下
共3页: 1 2 3 下一页