免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4270 | 回复: 2
打印 上一主题 下一主题

sybase IQ 分页 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-12 16:21 |只看该作者 |倒序浏览
有人写过sybase iq 分页的过程吗,IQ 数据量比较大,用什么处理比较好?

论坛徽章:
6
水瓶座
日期:2014-06-04 03:34:37水瓶座
日期:2014-06-17 13:20:31数据库技术版块每日发帖之星
日期:2016-07-09 06:20:00数据库技术版块每日发帖之星
日期:2016-07-17 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2010-11-12 16:37 |只看该作者
IQ中分页是个比较纠结的事情

论坛徽章:
0
3 [报告]
发表于 2010-11-12 17:01 |只看该作者
本帖最后由 wangdonsy 于 2010-11-12 17:05 编辑

不借助临时表或新建表,能不能在原表操作?
IQ 里面 ALTER TABLE 不能对临时表操作,新建表数据大,效率有问题
本论坛的一位兄弟写的

  1. Please see the below sp I wrote:

  2. CREATE PROCEDURE GetDataByPage(
  3. @SqlStr         varchar(8000),
  4. @PageSize       int,
  5. @CurrentPage    int)
  6. AS
  7. DECLARE @FirstRec int, @LastRec int,@dt varchar(10)
  8. BEGIN

  9.   SELECT @FirstRec = (@CurrentPage - 1) * @PageSize
  10.   SELECT @LastRec = (@CurrentPage * @PageSize + 1)

  11.   SELECT @dt= substring(convert(varchar,rand()),3,10)
  12.   
  13.   SELECT @SqlStr = stuff(@SqlStr,charindex(' FROM ',upper(@SqlStr)),6,' INTO tempdb..Paging'+@dt+' FROM ')
  14.   EXECUTE (@SqlStr)

  15.   SELECT @SqlStr = 'ALTER TABLE tempdb..Paging'+@dt+' ADD RID numeric(10) IDENTITY PRIMARY KEY'
  16.   EXECUTE (@SqlStr)
  17.   
  18.   SELECT @SqlStr = 'SELECT Count(*) From tempdb..Paging'+@dt
  19.   EXECUTE (@SqlStr)
  20.   
  21.   SELECT @SqlStr = 'SELECT * FROM tempdb..Paging'+@dt+' WHERE RID >; '+convert(varchar,@FirstRec)+' and RID < '+convert(varchar,@LastRec)
  22.   EXECUTE (@SqlStr)
  23.   
  24.   SELECT @SqlStr = 'DROP TABLE tempdb..Paging'+@dt
  25.   EXECUTE (@SqlStr)
  26.   
  27. END


  28. some comments:
  29. 1.@SqlStr     varchar(8000), depends on your page size
  30. 2. this is a generic paging sp, if you just want to use it for specific table, you'd better change the 'tempdb..Paging' to #Paging, the performance will be better
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP