sqlserver倒叙查询总记录数

qq_33747342 2016-07-12 08:02:37
假如sqlserver数据库 表里面有几千万条数据,我只倒叙查询十万条总记录数,只要这总记录数,不要表里面具体的数据, 因为我要分页查询,限制总记录数,不然一打开网页 ,有几千页上万页数据 有点慢。
我现在的sql:select count(*) from as sumcount from student






或者有什么好的办法能限制总页数的,
...全文
423 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-07-13
  • 打赏
  • 举报
回复
限制页数最好放在程序控制而不是在数据库里接口限制
中国风 2016-07-13
  • 打赏
  • 举报
回复
根本都不知道你在讲什么 要什么样的效果 限制是记录数不是页数 比如:几千页中倒序取最近的1000页,每页显示10条,限制记录数1000*10 分页时这样用

SELECT  *
FROM    ( SELECT    TOP (1000*10)*,
                    ROW_NUMBER() OVER ( ORDER BY 栏位列 DESC ) AS RN--倒序
          FROM      A
    
        ) AS t
WHERE   RN BETWEEN ( 页数 - 1 ) * 10 + 1 AND 页数 * 10;
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 11 楼 roy_88 的回复:
分页参照 http://bbs.csdn.net/topics/391978221
怎么限制总页数在100以内, 我现在有几千页数据
中国风 2016-07-13
  • 打赏
  • 举报
回复
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 8 楼 kk185800961 的回复:
控制分页的页数应该在程序那里控制,像搜索网站、电商网站……都不会超过100页。如lz像做多显示10页可以选择,在程序控制10页就行了。 按lz的说明,如果只是单纯的查一个表,求总记录的话,不管是正序和倒序的。按你的描述,该表只要大于10万行,则总记录显示10万行,没到则显示相应的值,如下:
DECLARE @SUMCOUNT INT --总记录
SELECT @SUMCOUNT=rows FROM sys.sysindexes where indid in(0,1) and id = OBJECT_ID(N'student')
SET @SUMCOUNT = (CASE WHEN @SUMCOUNT >100000 THEN 100000 ELSE @SUMCOUNT END)
请问怎么用程序控制总页数,不超过100页,用的java
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 5 楼 ap0405140 的回复:
请问什么是"倒叙查询这个表总记录数,并且限制总记录不能大于1000"? 是"倒叙"还是"倒序"?
倒序
薛定谔的DBA 2016-07-13
  • 打赏
  • 举报
回复
控制分页的页数应该在程序那里控制,像搜索网站、电商网站……都不会超过100页。如lz像做多显示10页可以选择,在程序控制10页就行了。 按lz的说明,如果只是单纯的查一个表,求总记录的话,不管是正序和倒序的。按你的描述,该表只要大于10万行,则总记录显示10万行,没到则显示相应的值,如下:
DECLARE @SUMCOUNT INT --总记录
SELECT @SUMCOUNT=rows FROM sys.sysindexes where indid in(0,1) and id = OBJECT_ID(N'student')
SET @SUMCOUNT = (CASE WHEN @SUMCOUNT >100000 THEN 100000 ELSE @SUMCOUNT END)
中国风 2016-07-13
  • 打赏
  • 举报
回复
在联机帮助看用法
中国风 2016-07-13
  • 打赏
  • 举报
回复
语句前加上 SELECT TOP 1000 或 set rowcount 1000;
唐诗三百首 2016-07-13
  • 打赏
  • 举报
回复
请问什么是"倒叙查询这个表总记录数,并且限制总记录不能大于1000"? 是"倒叙"还是"倒序"?
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 2 楼 roy_88 的回复:
SELECT rows FROM sysindexes WHERE indid IN(0,1) AND id=OBJECT_ID('student')
或用

SELECT rows FROM sys.partitions WHERE object_id=OBJECT_ID('student') AND index_id IN (0,1)
我要倒叙查询这个表总记录数,并且限制总记录不能大于1000
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 1 楼 ap0405140 的回复:
可以借助系统表得到表的记录数,

select b.rowcnt as sumcount
  from sys.tables a
  inner join sys.sysindexes b on a.object_id=b.id
  where a.name='表名' and b.indid<=1
我要倒叙查询这个表总记录数,并且限制总记录不能大于1000
中国风 2016-07-13
  • 打赏
  • 举报
回复
SELECT rows FROM sysindexes WHERE indid IN(0,1) AND id=OBJECT_ID('student')
或用

SELECT rows FROM sys.partitions WHERE object_id=OBJECT_ID('student') AND index_id IN (0,1)
qq_33747342 2016-07-13
  • 打赏
  • 举报
回复
引用 14 楼 roy_88 的回复:
限制页数最好放在程序控制而不是在数据库里接口限制
这个sql: select count(*) from as sumcount from student 他的结果是这个表里有多少条数据,假如有100条,我现在要让这个结果不能大于50条,sql怎么写. 或者用程序怎么限制 总页数不能大于100页,我现在有几千页数据,jsp页面
唐诗三百首 2016-07-12
  • 打赏
  • 举报
回复
可以借助系统表得到表的记录数,

select b.rowcnt as sumcount
  from sys.tables a
  inner join sys.sysindexes b on a.object_id=b.id
  where a.name='表名' and b.indid<=1

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧