`
yanjie_1206
  • 浏览: 8033 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

MS-SQL分页not in 方法改进之使用Max\Min

 
阅读更多

先看下表中共有多少条数据:

一百二十多万条,呵呵。

sql语句:

复制代码
declare @d datetime
set @d = getdate()
select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID not in (select top 9990 ID from Test1 order by ID) order by ID 
select [not in方法升序分页执行花费时间(毫秒)]=datediff(ms,@d,getdate()) 

declare @s datetime
set @s = getdate()
select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID >=(select max(ID) from (select top 9991 ID from test1 order by ID) as T) order by ID
select [Max方法升序分页执行花费时间(毫秒)]=datediff(ms,@s,getdate()) 

declare @t datetime
set @t = getdate()
select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID not in (select top 9990 ID from Test1 order by ID desc) order by ID desc 
select [not in方法降序分页执行花费时间(毫秒)]=datediff(ms,@t,getdate()) 

declare @q datetime
set @q = getdate()
select top 10 ID,U_Name,U_Age,U_Sex,U_Address from Test1 where ID <=(select min(ID) from (select top 9991 ID from Test1 order by ID desc) as T) order by ID desc
select [Min方法降序分页执行花费时间(毫秒)]=datediff(ms,@q,getdate())
复制代码

分页效率一目了然!

两种方法的不同点之一就是计算第二个top中的值

not in 中计算公式为:

pgSize * (pgNo - 1)

max\min中计算公式为:

((pgNo-1)*pgSize+1)

pgNo为当前第几页,pgSize为每页几条数据。

分享到:
评论

相关推荐

    asp.net c#使用min-max的高效分页方法

    本文将介绍一种高效的分页方法——Min-Max分页。 Min-Max分页方法的核心思想是利用数据库的索引来获取特定范围内的数据,而不是遍历所有记录。这种方法显著减少了数据库的负担,尤其是在处理大数据集时。 在提供的...

    T-SQL示例大全(全是T-SQL语句 )

    T-SQL提供了大量内置函数,如聚合函数(COUNT、SUM、AVG、MIN、MAX)、字符串函数(CONCAT、SUBSTRING、PATINDEX)、日期时间函数(DATEADD、DATEDIFF、GETDATE)等,这些函数可以帮助处理和转换数据。 以上只是T-...

    17套T-SQL试题

    3. 聚合函数:掌握`COUNT`, `SUM`, `AVG`, `MAX`, `MIN`等函数的应用。 4. 分组与排序:学习`GROUP BY`和`ORDER BY`子句,以及`HAVING`子句的使用。 5. 连接查询:理解不同类型的连接(INNER JOIN, LEFT JOIN, RIGHT...

    lasticsearch-SQL使用SQL查询Elasticsearch

    3. **聚合函数**:类似SQL中的COUNT、SUM、AVG、MIN、MAX等统计函数,Elasticsearch-SQL也提供了对应的聚合功能,可以对数据进行统计分析。 4. **GROUP BY与HAVING子句**:用于数据分组和过滤,可以结合聚合函数...

    elasticsearch-sql-2.2.0.1.zip

    它的主要功能是将传统的SQL查询语句引入到Elasticsearch之中,使得用户能够通过熟悉的SQL语法来操作和查询Elasticsearch索引中的数据,极大地降低了非编程背景用户的使用门槛。这款插件的版本为2.2.0.1,其设计思路...

    transact-sql权威指南(pdf)

    3. **聚合函数与窗口函数**:讲解了SUM、AVG、COUNT、MAX和MIN等聚合函数的用法,以及ROW_NUMBER、RANK、DENSE_RANK、LEAD和LAG等窗口函数的应用,这些在数据分析和报表制作中非常关键。 4. **存储过程和函数**:...

    sql server分页技术(SQL Server 与Access数据库相关分页技术)

    这种方法是对第一种的改进,它首先选取`@totalRecord-@startpos`条记录,然后再次使用`TOP`选取需要的分页数据。这允许对非主键字段进行排序,但每次都需要主键信息,且效率仍不理想。 3. **TOP(max) 和 TOP(min)*...

    SQLSERVER2005技术内幕:T-SQL查询

    2. 数据查询:深入理解SELECT语句的使用,如选择列、指定表、连接操作、子查询、聚合函数(COUNT、SUM、AVG、MAX、MIN)、分组(GROUP BY)与排序(ORDER BY)。 3. 条件过滤:学习WHERE子句,掌握比较运算符(=、...

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数

    聚合窗口函数包括SUM()、AVG()、MAX()、MIN()和COUNT()等,而非聚合窗口函数包括ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE()和FIRST_VALUE()等。 5. 性能调优的重要性 在数据库操作中,性能调优至关重要,尤其是...

    一个高效的SQL分页语句

    ### 一个高效的SQL分页语句 #### 概述 在进行程序开发的过程中,经常会遇到需要处理大量数据的情况。为了提高用户体验,通常会采用分页技术来展示数据,而不是一次性加载所有数据。本文将详细介绍一个高效的SQL...

    sqlserver 存储过程分页(支持千万级)算法研究

    对于大规模数据集,建议优先考虑使用基于MAX或MIN函数的方法,因为它们能够更好地利用索引,减少全表扫描,提高查询效率。同时,合理设计索引,如在经常用于分页的字段上建立索引,可以显著提升分页查询的速度。 ...

    sqlserver+group by分组查询分页存储过程

    `GROUP BY`子句在SQL查询语言中用于将数据表中的行归类为一组,通常与聚合函数如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, 和 `MIN()` 结合使用,以便对每一组的数据进行统计分析。例如,如果我们有一个销售记录表,并...

    Sql server 通用分页方法

    这里使用`TOP`关键字结合`MIN`或`MAX`函数来定位数据的起点。 4. **应用WHERE条件**:如果存在查询条件,则将其添加到外层查询中。 5. **执行动态SQL语句**:最后,使用`EXEC`命令执行构建好的动态SQL语句。 这种...

    几款通用的sql分页存储过程

    ### 几款通用的SQL分页存储过程:深入解析与应用 在数据库操作中,分页查询是一项常见的需求,尤其当数据量庞大时,合理的分页可以极大地提高查询效率和用户体验。本文将深入分析两款通用的SQL分页存储过程,分别...

    实现千万级数据的SQL分页代码

    本文将介绍一种高效的SQL分页查询方法,该方法能在5秒内获取1448万条记录中的第1200页的100条记录。 #### 技术原理 本方案的核心在于利用两次TOP查询以及子查询来实现高效分页。首先,根据分页参数计算出当前页码...

    MS SQL全系列教程

    - 分组与聚合函数:GROUP BY、HAVING、COUNT、SUM、AVG、MAX和MIN的用法。 - 子查询:嵌套查询,用于在查询中使用一个查询的结果。 - 联接查询:LEFT JOIN、RIGHT JOIN、INNER JOIN和FULL OUTER JOIN的区别与应用...

    SQL各种查询方法

    4. **分组查询**:`GROUP BY`语句用于将数据按一个或多个列进行分组,常与聚合函数(如`COUNT`, `SUM`, `AVG`, `MIN`, `MAX`)结合使用,例如`SELECT 列1, COUNT(*) FROM 表名 GROUP BY 列1`计算每组的数量。...

    SQL语法优化策略 、T-SQL编程注意事项

    5. **`EXISTS`与`NOT EXISTS`**:在检查数据是否存在时,优先考虑使用`EXISTS`,因为它通常比`COUNT(*)`或`NOT IN`更快。 6. **避免`OR`与`UNION`**:在`JOIN`操作中,尽量避免在`WHERE`子句中使用`OR`,可能的话,...

    三种SQL分页查询的存储过程代码

    该方法使用MAX或MIN函数来获取当前页的数据。存储过程代码如下: ```sql CREATE PROC [dbo].[proc_select_id] @pageindex int=1,--当前页数 @pagesize int=10,--每页大小 @tablename VARCHAR(50)='',--表名 @...

    SQL面试经典版-整理篇

    - 分页查询:LIMIT或OFFSET在MySQL中的应用,ROW_NUMBER()、RANK()和DENSE_RANK()在SQL Server中的分页方法。 2. Oracle数据库: - PL/SQL:Oracle的存储过程、函数、触发器和游标。 - 分区表:提高大数据量表的...

Global site tag (gtag.js) - Google Analytics