SQL SERVER 大数据的分页【测】

我用五百万的数据来测试,有兴趣的大家可以试试千万级的;

1、先添加大量数据

SQL SERVER 百万级数据测试【测】

2、普通 分页

A、ROW_NUMBER()OVER

SELECT  *
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY T.UserID ) AS row ,
                    *
          FROM      Users AS T
        ) AS TT
WHERE   TT.row BETWEEN 999000 AND 1000000;

测:【百万级】第一页时间:126MS, 100W的时间 1073MS, 接近第一页10倍,500W的时间 58696MS 100W的55倍,第一页的466倍。

B、两次TOP分页

SELECT TOP 1000 *
FROM    Users
WHERE   UserID NOT IN ( SELECT TOP ( 1000 * ( 5000 - 1 ) )
                                UserID
                        FROM    Users
                        ORDER BY UserID )
ORDER BY UserID; 

测:【百万级】第一页时间:140MS, 100W的时间 1190MS,500W的时间 5526MS 100W的5倍,第一页的39倍。

为什么我测试的获取(500W)时,TOP  TOP 要比ROW_NUMBER()效率更好一些呢?

最起码:100W以内的数据可以采用ROW_NUMBER()这样的分页,更优雅效率也稍微好一些,勉强可以接受的,数据再大些,如何优化代码也无济于事的,这牵扯的是数据库的计算能力,类似这两种的都PASS。

2、优化分页(第一次

时间: 2024-08-08 20:49:59

SQL SERVER 大数据的分页【测】的相关文章

SQL Server 大数据量分页建议方案

简单的说就是这个 select top(20) * from( select *, rowid = row_number() over(order by xxx) from tb with(nolock) ) data where rowid > 0 order by rowid 或者这样写 select * from( select *, rowid = row_number() over(order by xxx) from tb with(nolock) ) data where rowi

SQL SERVER大数据分页

select * from (select rownum r, a.* from (select * from  table_name order by ndatetime desc ) a where rownum <= currentPage * pageSize ) where r > (currentPage - 1) * pageSizeSQL SERVER大数据分页,布布扣,bubuko.com

C# &amp; SQL Server大数据量插入方式对比

以下内容大部分来自: http://blog.csdn.net/tjvictor/article/details/4360030 部分内容出自互联网,实验结果为亲测. 最近自己开发一个向数据库中插入大量历史数据的函数库,需要解决一个大数据量插入的效率问题.不用分析,我知道如果采取逐条数据插入的方式,那么效率肯定很低,光是那么多循环就知道很慢了.于是乎,我找到了上篇博客,知道了BulkCopy和TVPs方式.为了更好的了解其效率,我自己动手亲测了一下效果,测试的数据库位于本机. (1)方式1:循环

SQL Server 大数据搬迁之文件组备份还原实战

原文:SQL Server 大数据搬迁之文件组备份还原实战 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) 注意事项(Attention) 疑问(Questions) 参考文献(References) 二.背景(Contexts) 有一个数据库大概在700G左右,需要从服务器A搬迁到服务器B,两台服务器网络传输速度可以达到8MB/s,怎么做才能更

Sql server 大数据量插入速度慢或丢失数据解决办法

问题描述:我的设备每秒2000条数据插入数据库,2个设备总共4000条,当在程序里面直接用insert语句插入时,两个设备同时插入大概总共能插入约2800条左右,数据丢失约1200条左右,找了好多解决方法,整理了两种效果比较明显的解决办法: 第一种:使用Sql Server函数: 1.将数据组合成字串,使用函数将数据插入内存表,后将内存表数据复制到要插入的表. 2.组合成的字符换格式:'111|222|333|456,7894,7458|0|1|2014-01-01 12:15:16;1111|

SQL Server大数据导入导出:将一张表的数据导入到另一张表

今天下午休息的时候又被扔给一项任务:把全国的街道数据导入街道表.但是他们扔给我的SQL脚本是从网上down的一个,跟平台这边的数据库设计的完全不一样. 当时的思路是:先把扔给我的脚本在本地生成一个表,然后选出要的数据,批量插入到开发库所在服务器的表. 然后,按照这个思路做了个测试: INSERT INTO dbo.test_Street(Code,CountyCode,CnName,VersionNo,Creator,CreateTime,ValidStatus) /*要插入数据的表*/ SEL

sql server 大数据, 统计分组查询,数据量比较大计算十分钟内每秒钟执行次数

-- 数据量比较大的情况,统计十分钟内每秒钟执行次数 declare @begintime varchar(100); -- 开始时间 declare @endtime varchar(100); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08-10 09:10:00' -- 开始时间 set @endtime = '2019-08-10 09:20:00' -- 结束时间 set @num = (select count(

SQL Server 大数据量批量插入

private void AddShuJu_Click(object sender, RoutedEventArgs e) { Stopwatch wath = new Stopwatch(); wath.Start(); for (int i = 0; i < 10; i++) { //创建datatable实例 DataTable data = new DataTable(); //填充字段 data = GetFiled(data); for (int count = i * 100000

清理ms sql server 大日志文件数据

1.手动分离数据库: 2.手动删除日志文件: 3.重新生成日志文件: CREATE DATABASE FMIS0 ON (FILENAME = 'E:\FMIS0_DATA\FMIS0-Date') FOR ATTACH_REBUILD_LOG ;GO 清理ms sql server 大日志文件数据