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

SQL SERVER (MSSQL) 学习笔记 性能的更多相关文章

  1. SQL Server 2012 学习笔记5

    1. 索引(Index) 索引是快速的定位和查找数据.索引分为: 聚集索引:唯一,默认主键,一般选取比较连贯的字段,聚集索引是物理排序. 非聚集索引: 并没有把数据物理排序,只是多了一个索引页(包括索 ...

  2. sql server 2008 学习笔记

    sql server 2008 删除已有的实例 想从setup.exe中区卸载,没找到. 原来还是要从控制面板中卸载,卸载Microsoft SQL Server 2008 卸载界面会提示让你选择要删 ...

  3. SQL Server 2012 学习笔记1

    1. 新建的数据库会产生两个文件(数据文件.mdf 和日志文件.ldf) 2. 编辑表格和为表格录入数据 "Design"为设计表格,"Edit Top 200 Rows ...

  4. MS Sql server 2008 学习笔记

    数据库中常用的概念 Sql本身是一个服务器,没有界面,Management Studio  只是一个SQL Server管理工具而已,不是服务器. Sql server 在管理工具下面的服务SQL S ...

  5. SQL Server 2012 学习笔记4

    1.  约束 , 给某些字段添加约束条件, 比如年龄在1-100岁之间 添加约束,输入 Age>1 and Age < 100 2.  存储过程 存储过程也可以做增删改查    存储过程的 ...

  6. SQL Server数据库学习笔记-设计表时应该考虑的因素

    设计数据库其实就是设计数据库中的表.到底要注意些什么才能够设计好一个数据库呢?一个宗旨,8个建议. 一个宗旨“尽量少的表,每个表中尽量少的列,合理的表结构”. 8个建议: 第一个,首先要考虑的是咱们这 ...

  7. SQL Server数据库学习笔记-概念数据模型

    概念数据模型(Conceptual Data Model)也称为信息模型.它是对客观事物及其联系的抽象,用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具. ...

  8. SQL Server 2012学习笔记 1 命令行安装

    setup.exe /Q /IACCEPTSQLSERVERLICENSETERMS /ACTION=install /PID=748RB-X4T6B-MRM7V-RTVFF-CHC8H /FEATU ...

  9. SQL Server 2012 学习笔记3 增查改删

    现在举例几个"增查改删"的语句 select * from UserInfor --查找所有字段 select username,UserId from UserInfor -- ...

  10. SQL Server 2012 学习笔记2

    1. 新建数据库 可以在对应目录下右键新建数据库,也可以用程序添加: 先打开程序编辑对话框"New Query" create database Library 2. 添加表格 可 ...

随机推荐

  1. 2 手机号登录时,调的不是login接口,而是注册的一个接口

    手机号登录时,调的不是login接口,而是注册的一个接口

  2. yolov5 损失函数代码详解

    前言 模型的损失计算包括3个方面,分别是: 定位损失 分类损失 置信度损失 损失的计算公式如下: 损失计算的代码流程也是按照这三大块来计算的.本篇主要讲解yolov5中损失计算的实现,包括损失的逻辑实 ...

  3. webpack4.15.1 学习笔记(三) — 模块热替换HMR

    目录 模块热替换 HMR HMR监听文件变化 HMR 修改样式表 模块热替换 HMR 允许在运行时更新各种模块,而无需进行完全刷新.不适用于生产环境,意味着应当只在开发环境使用.启用HMR实际上就是更 ...

  4. 如何获取安全获取苹果udid,imei

    [点击测试 https://authapi.applekuid.com](https://authapi.applekuid.com/) 目前国内有很多获取udid的方法,例如蒲公英 还有其他的网站都 ...

  5. sed 进阶使用

    sed 进阶使用 工作原理 sed 维护两个数据缓冲区: 活动模式空间 和 辅助保持空间 两者最初都是空的 sed 通过对每一行输入执行以下循环进行操作 从输入流中读取一行,删除任何尾随的换行符,并将 ...

  6. c语言模拟Python的命名参数

    最近在书里看到的,让c语言去模拟其他语言里有的命名函数参数.觉得比较有意思所以记录一下. 目标 众所周知c语言里是没有命名函数参数这种东西的,形式参数虽然有自己的名字,但传递的时候并不能通过这个名字来 ...

  7. 【SpringCloud】 Re02 Nacos

    运行Nacos注册中心 win版Nacos在bin目录下打开cmd 执行此命令以运行单机模式的Nacos startup.cmd -m standalone 控制台输出: Microsoft Wind ...

  8. 【Maven】下载安装(Linux)

    Maven官网下载地址: http://maven.apache.org/download.cgi 点选这个压缩包 wget或者上传都行 解压 tar -zxvf apache-maven-3.6.3 ...

  9. AI的发展需要有应用和落地场景 —— 李开复:传统公司看不懂技术,大模型落地B端阻碍多

    引自:https://baijiahao.baidu.com/s?id=1801826206644007472&wfr=spider&for=pc "我们投了七八家机器人企业 ...

  10. 《Python数据可视化之matplotlib实践》 源码 第二篇 精进 第七章

    图   7.1   import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams[& ...