首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么/如何使用我的SQL查询变得更快?

为什么/如何使用我的SQL查询变得更快?
EN

Stack Overflow用户
提问于 2012-08-28 02:26:21
回答 2查看 883关注 0票数 2

我在一个表中对大约1,300,000条记录进行了查询。它接受满足某些WHERE条件的某些记录,并将它们插入到另一个表中。它首先完全清空目标表。

每次执行时,完成查询所需的时间都会大大缩短:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1st: 5 minutes, 3 seconds
2nd: 2 minutes, 43 seconds
3rd: 12 seconds
4th: 3 seconds

除了点击Execute,我什么也不做。我的查询看起来像这样(为了长度起见略有缩写):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DELETE FROM dbo.ConsolidatedLogs --clear target table

DECLARE @ClientID int

DECLARE c CURSOR FOR SELECT ClientID FROM dbo.Clients
OPEN c

FETCH NEXT FROM c INTO @ClientID --foreach LogID
WHILE @@FETCH_STATUS = 0
BEGIN

   INSERT INTO dbo.ConsolidatedLogs
        (col1, col2)
        SELECT col1, col2
        FROM dbo.CompleteLogsRaw
        WHERE col3 = true AND
              ClientID = @ClientID

   FETCH NEXT FROM c INTO @ClientID

END
CLOSE c
DEALLOCATE c

这是如何/为什么会发生的?SQL Server究竟在做些什么来实现这一点?

此查询将作为SQL Server代理作业运行,每3小时运行一次。是否每次都要花费完整的5分钟,或者会更短,因为作业只运行这一个查询,尽管它有3个小时的延迟?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-28 02:44:01

如果相同的查询在每次运行时都变得更快,那么缓存数据的可能性很大。那么,数据可以缓存在哪里呢?

  • 查询计划缓存
  • SQL Server的查询SQL Server系统IO缓冲区
  • 硬盘控制器缓存
  • 硬盘磁盘缓存

<代码>F211

您可以在两次运行之间清除SQL Server查询缓存,以查看该缓存的影响

How can I clear the SQL Server query cache?

SQL Server将使用任何专用于它的RAM,将它经常访问的内容保存在RAM中,而不是磁盘上。运行同一查询的次数越多,通常可以在磁盘上找到的数据就越有可能驻留在RAM中。

如果您希望查看操作系统级缓存和硬件级缓存是否有助于提高性能,则最容易通过执行重新启动来重置它们。

如果发布SQL Server用于每次执行查询的查询计划,则可以进行更详细的诊断。

票数 8
EN

Stack Overflow用户

发布于 2012-08-28 02:45:04

当Sql Server在Enterprise Manager中执行查询时,它会在第一次执行后创建一个“执行”或“查询计划”,并缓存该计划。简而言之,“查询计划”描述了SQL Server将如何攻击满足结果所需的表、字段、索引和数据。每次重新运行它时,都会从计划缓存中提取该查询,并且省略了查询预处理器通常必须执行的“繁重任务”。这允许在第二次和随后的执行中更快地执行查询。

请注意,这是对一个更详细(因此,本质上更酷)的过程的过度简化,但这是查询计划101:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12152012

复制
相关文章
为什么Elasticsearch查询变得这么慢了?
Elasticsearch社区中经常看到慢查询问题:“你能帮我看看Elasticsearch的响应时间吗?”或者是:“我的ES查询耗时很长,我该怎么做?”
铭毅天下
2018/10/24
17.4K0
为什么Elasticsearch查询变得这么慢了?
Python 3.11 ,即将变得更快!
作为一门异常受欢迎的编程语言,Python的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python一直被诟病的就是它运行速度太慢。
AirPython
2022/09/28
5840
Python 3.11 ,即将变得更快!
Python 3.11 ,即将变得更快!
这是「进击的Coder」的第 632 篇技术分享 来源:CSDN “ 阅读本文大概需要 5 分钟。 ” 作为一门异常受欢迎的编程语言,Python 的优点有很多,比如:易于学习、用途广泛、有成千上万个用于数据科学的有用的库。但同时,Python 一直被诟病的就是它运行速度太慢。 在去年的 PyCon US 2021 大会上,Python 之父 Guido van Rossum 曾表示:要在 2022 年的 Python 3.11 中,将 Python 速度提高 2 倍,4 年内,速度提升 5 倍,以解决
崔庆才
2022/05/27
8410
Python 3.11 ,即将变得更快!
为什么我使用了索引,查询还是慢?
首先SQL判断一个语句是不是慢查询语句,用的是语句的执行时间。他把语句执行时间跟long_query_time这个系统参数作比较,如果语句执行时间比它还大,就会把这个语句记录到慢查询日志里面,这个参数的默认值是10秒。当然在生产上,我们不会设置这么大,一般会设置1秒,对于一些比较敏感的业务,可能会设置一个比1秒还小的值。
Java_老男孩
2020/02/18
2.4K0
为什么我使用了索引,查询还是慢?
为什么我使用了索引,查询还是慢?
经常有同学疑问,为什么有时候一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。
青阳
2022/02/07
1K0
为什么我使用了索引,查询还是慢?
经常有朋友问到:我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。
java进阶架构师
2020/11/04
5580
为什么我使用了索引,查询还是慢?
为什么我使用了索引,查询还是慢?
点击上方蓝色“程序猿DD”,选择“设为星标” 回复“资源”获取独家整理的学习资料! 作者 | 张飞洪 来源 | cnblogs.com/jackyfei/p/12122767.html 经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。 另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考 ORM的权衡和抉择。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当
程序猿DD
2023/04/17
2310
为什么我使用了索引,查询还是慢?
我的Mysql查询SQL优化总结
当我们遇到一个慢查询语句时,首先要做的是检查所编写的 SQL 语句是否合理,优化 SQL 语句从而提升查询效率。所以对 SQL 有一个整体的认识是有必要的。
程序员小明
2019/10/10
1.7K0
我的Mysql查询SQL优化总结
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
id int primary key auto_increment, — 主键id
全栈程序员站长
2022/09/22
4.3K0
java中sql如何嵌套查找_SQL 查询嵌套使用[通俗易懂]
SQL使用(一):如何使用SQL语句去查询第二高的值
初看了一眼题时,脑子还有一点迷糊,对于数值最大的和最小的,可以使用max和min去查询出来,但对于第N的就不好找了,思考了一会儿了,心里大致有二个思路:
王豆豆
2020/07/24
5.8K0
SQL使用(一):如何使用SQL语句去查询第二高的值
如何写出更快的 SQL (db2)
在数据库开发的初期,或者在系统刚上线的初期,由于数据量比较少,一些查询 SQL 语句、视图、存储过程编写等体会不出 SQL 语句各种写法的性能优劣,但是随着数据库中数据的增加,像数据仓库这种 TB 级别的海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,因此写 sql 不能简单的能查出相应的数据即可,而是要写出高质量的 SQL 语句,提高 SQL 语句的执行速度。
matinal
2020/11/27
2.2K0
如何写出更快的 SQL (db2)
BI为什么我的查询运行多次?
连接器可以出于各种原因对数据源进行多次调用,包括元数据、结果缓存、分页等。 此行为是正常的,旨在以这种方式工作。
冬夜先生
2022/09/09
5.5K0
如何使用calcite构建SQL并执行查询
大家好,这是 Calcite 的第二篇文章了,我一直毫不掩饰对她的喜爱,而且一直在致力于为社区做一些贡献,如果你也喜欢这个项目的话,欢迎评论,转发,如果没看过第一篇的话,也欢迎移步去看看(手把手教你使用Calcite查看SQL执行计划)。如果你还不了解这个项目的话,我也希望能通过我,让你知道这个优秀的项目。
麒思妙想
2023/08/28
1.1K0
如何使用calcite构建SQL并执行查询
如何使用慢查询快速定位执行慢的 SQL?
慢查询可以帮我们找到执行慢的 SQL,在使用前,我们需要先看下慢查询是否已经开启,使用下面这条命令即可:
码农架构
2020/10/26
2.6K0
如何使用慢查询快速定位执行慢的 SQL?
如何使用慢查询快速定位执行慢的 SQL?
慢查询可以帮我们找到执行慢的 SQL,在使用前,我们需要先看下慢查询是否已经开启,使用下面这条命令即可:
码农架构
2020/10/13
2.7K0
如何使用慢查询快速定位执行慢的 SQL?
不懂就问,怎么才能让家里的网速变得更快?
过去的这些年里,SD-WAN、Wi-Fi 6和5G这类的创新技术,使得我们现在的网络可以做更多的事情,但也使网络的负担变大,变复杂。
网络工程师笔记
2022/10/31
1.2K0
为什么我使用了索引,查询还是慢?「建议收藏」
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。 另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考我的另外一篇<ORM的权衡和抉择>。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当别论),因为ORM屏蔽了太多的DB底层的知识内容,对程序员不是件好事,对性能有极致追求,但是ORM理解不透彻的团队更加要谨慎。
全栈程序员站长
2022/02/14
4630
为什么我使用了索引,查询还是慢?「建议收藏」
SQL参数化查询为什么能够防止SQL注入
待执行的SQL被编译后存放在缓存池中,DB执行execute的时候,并不会再去编译一次,而是找到SQL模板,将参数传递给它然后执行。所以类似于 or 1==1 的命令会当成参数传递,而不会进行语义解析执行。
:Darwin
2023/08/16
4880
系统如何设计才能更快地查询到数据?
导语 | 开通微信时,系统如何判断你输入的手机号没被注册?如何使用更少的存储空间、更快的速度解决这个问题?对于这个问题,腾讯微信支付数据开发工程师杭天梦带来了她利用Bloom过滤器解决此类问题的思考,向大家分享。本文分享的主要内容为Bloom过滤器的简介、原理、应用和结论等。 “开通微信时,系统如何判断你输入的手机号没被注册?如何使用更少的存储空间、更快的速度解决这个问题?” 对于这个问题,最暴力的方法为: 通过遍历来判断是否被注册。那么时间复杂度为O(n),空间复杂度也是O(n)。 稍微学过
腾讯云开发者
2021/07/22
5850
抽象SQL查询:SQL-MAP技术的使用
什么是参数化查询?我们来看百科对此的定义和示例: 一,定义 ------------------------------------------------------------------ 参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。
用户1177503
2018/02/27
2.3K0

相似问题

为什么删除wheres会使查询变得更快?

20

T-SQL:如果我使用表变量,为什么我的查询会更快?

30

为什么我的数组影片剪辑在变得更快时变得更难点击?

21

如何使我的FOR XML SQL查询速度更快?

123

哪个SQL查询速度更快,为什么?

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文