zoukankan      html  css  js  c++  java
  • SQL SERVER (MSSQL) 学习笔记 性能

    refer: 

    执行计划: 

    https://www.cnblogs.com/fish-li/archive/2011/06/06/2073626.html

    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

  • 相关阅读:
    CF 1119 题解
    CF 582 题解
    CF 1098 题解
    CF 1129 题解
    CF 513 题解
    CF 417 D 题解
    ingress nginx遇到502错误,connect() failed (113 Host is unreachable) while connecting to upstream
    MySQL性能剖析
    MySQL的基准测试
    MySQL架构与历史
  • 原文地址:https://www.cnblogs.com/keatkeat/p/13979497.html
Copyright © 2011-2022 走看看