SQL SERVER (MSSQL) 学习笔记 性能

refer: 

看懂SqlServer查询计划 

How do I identify slow queries in sql server?

 

 

join operator, hash, merge, nested

https://cloud.tencent.com/developer/article/1039327

https://www.youtube.com/watch?v=jiWCPJtDE2c (讲 merge join 过程)

https://www.youtube.com/results?search_query=hash+join+in+sql+server (讲 hash join 过程)

https://www.youtube.com/watch?v=pJWCwfv983Q (讲全部最好的了)

 

各有千秋 

nested join 就是 loop outer 表然后找 inner 表

找 inner 表要用索引, 不然慢死, outer 表不可以太大,loop 太多也不太好

merge join 通过先 sort 然后一条一条 row compare 因为先 sort 好了所以对比的时候就是一个 z 字形往下走 

如果表本身就有 sort 好了, 那么这个肯定会快过 nested, 如果没有特地去 sort 的话, 未必就一定好. 

hash join 是通过算法把 compare 的 key 归类, 和 merge 一样也是通过一种 pre 处理的方式去调整结构然后提升 compare 的速度

话说如果表达的话, hash table 会开临时表, 那也是不太好的

总结就是很多原因可以导致不同的 loop 方式会比较快,所以还是得依据情况看,然后针对性看怎么优化. 

 

 

 

 

 

 

 

 

 

检查运行时间

DECLARE @t1 DATETIME;
DECLARE @t2 DATETIME;

SET @t1 = GETDATE();

--query

SET @t2 = GETDATE();
SELECT DATEDIFF(millisecond,@t1,@t2) AS elapsed_ms

 

或者是

set statistics time on

set statistics time off

 

或者是 

 

 

看执行计划 : 

set statistics profile on;

set statistics profile off;

ctrl + L

 

clear buffer

DBCC DROPCLEANBUFFERS

 

posted @   兴杰  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示