添加聚集索引后高效分页查询的效率

2024-03-12 01:38

本文主要是介绍添加聚集索引后高效分页查询的效率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本人使用的是sql 2012数据库

ALTER proc [dbo].[ex2](@count int --次数
)
as
begin
declare @i int
set @i = 0
while @i < @count
begin
SELECT * FROM product0   WHERE[bName] like  '%23%'Order by grade desc,createTime desc OFFSET 4 ROWS FETCH NEXT 3 ROWS ONLY ;
set @i = @i + 1
end
end

100次 用时82秒,通过为grade添加聚集索引,用时 84秒

GO
ALTER proc [dbo].[ex3](@count int --次数
)
as
begin
declare @i int
set @i = 0
while @i < @count
begin
SELECT * FROM product0 w1   WHERE id in   (  SELECT top 3 id FROM   (  SELECT top 7 ID, grade,createTime FROM product0 where [bName] like  '%23%' and[pName] like  '%%' and[find0] like  '%%' and[find1] like  '%%' ORDER BY grade desc) w order by grade,createTime DESC) order by grade desc,createTime DESC
set @i = @i + 1
end
end

100次 用时86秒,通过为grade添加聚集索引,用时 7秒

查询1000的后三条数据,效率比较

GO
ALTER proc [dbo].[ex1](@count int --次数
)
as
begin
declare @i int
set @i = 0
while @i < @count
begin
SELECT * FROM product0 w1, 
(SELECT TOP 3 id FROM (SELECT TOP 1000 id, grade,createTime FROM product0where[bName] like  '%23%' and[pName] like  '%%' and[find0] like  '%%' and[find1] like  '%%' ORDER BY grade DESC) w ORDER BY grade ASC 
) w2 WHERE w1.id = w2.id ORDER BY w1.grade DESC, w1.createTime desc
set @i = @i + 1
end
end

100次,添加gradle聚集索引,用时9秒

GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[ex3](@count int --次数
)
as
begin
declare @i int
set @i = 0
while @i < @count
begin
SELECT * FROM product0 w1   WHERE id in   (  SELECT top 3 id FROM   (  SELECT top 1000 ID, grade,createTime FROM product0 where [bName] like  '%23%' and[pName] like  '%%' and[find0] like  '%%' and[find1] like  '%%' ORDER BY grade desc) w order by grade) order by grade desc,createTime DESC
set @i = @i + 1
end
end

100次,添加gradle聚集索引,用时9秒

GO
ALTER proc [dbo].[ex2](@count int --次数
)
as
begin
declare @i int
set @i = 0
while @i < @count
begin
SELECT * FROM  (SELECT TOP 3 * FROM (SELECT TOP 1000 * FROM product0where [bName] like  '%23%' and[pName] like  '%%' and[find0] like  '%%' and[find1] like  '%%'ORDER BY grade DESC ) f ORDER BY f.grade ASC) s ORDER BY s.grade DESC ,s.createTime Desc
set @i = @i + 1
end
end

100次,添加gradle聚集索引,用时4秒

go
execute sp_helpindex @objname = 'product0'  --查看索引
godrop index product0.CLUSTER_id;  --删除索引
go
CREATE CLUSTERED INDEX CLUSTER_id ON product0(grade) --创建索引

本人通过添加和删除聚集索引发现:使用SQL server 2012提供的 OFFSET 4 ROWS FETCH NEXT 3 ROWS ONLY 的查询语句,在速率上没有明显的提示。

这篇关于添加聚集索引后高效分页查询的效率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799746

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

MySQL多列IN查询的实现

《MySQL多列IN查询的实现》多列IN查询是一种强大的筛选工具,它允许通过多字段组合快速过滤数据,本文主要介绍了MySQL多列IN查询的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析与优化1.

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Mysql中深分页的五种常用方法整理

《Mysql中深分页的五种常用方法整理》在数据量非常大的情况下,深分页查询则变得很常见,这篇文章为大家整理了5个常用的方法,文中的示例代码讲解详细,大家可以根据自己的需求进行选择... 目录方案一:延迟关联 (Deferred Join)方案二:有序唯一键分页 (Cursor-based Paginatio

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

mybatis-plus分页无效问题解决

《mybatis-plus分页无效问题解决》本文主要介绍了mybatis-plus分页无效问题解决,原因是配置分页插件的版本问题,旧版本和新版本的MyBatis-Plus需要不同的分页配置,感兴趣的可... 昨天在做一www.chinasem.cn个新项目使用myBATis-plus分页一直失败,后来经过多方

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员