zoukankan      html  css  js  c++  java
  • 调优SQL思路

    --调优SQL


    --sqlreview ->logshipping -> ag辅助副本


    --查看正确的执行计划 打开实际的执行计划
    set statistics io on


    --查看错误的执行计划 打开实际的执行计划
    set statistics io on


    --对比 正确和错误 执行计划的差别
    紧盯最大返回记录数处,找最粗的,不要看cost百分比 没用!
    找出问题点,是否走错了索引,或未走做引

    --对于缺失索引的 创建索引
    use SiccDB
    sp_spaceused CDRSub_Current_Merge --116GB

    create index idx_CDRSub_Merge_Truncated on CDRSub_Current_Merge(TIME_IN) with(online=on)


    --对于走错的索引的 释放错误的执行计划
    select sql_handle,* from sys.dm_exec_requests where session_id=77

    DBCC FREEPROCCACHE (0x060006001ECA270EC0215D05000000000000000000000000);
    GO


    --更新索引统计信息
    update statistics CDRSub_Current_Merge
    update statistics CDRSub_Current_Merge idx_CDRSub_Merge_Truncated


    --再次运行sql,查看是否正常

    --更新统计信息无效,查看索引碎片率的情况
    更新过统计信息后 实际返回行和评估返回行 还是有差距的话,需要查看索引是否碎片严重

    SELECT avg_fragmentation_in_percent,* FROM sys.dm_db_index_physical_stats
    (DB_ID(N'SiccDB'), OBJECT_ID(N'dbo.CDRSub_Current_Merge'), NULL, NULL , 'LIMITED');



    use SiccDB
    go
    ALTER INDEX [idx_CDRSub_Merge_Truncated] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON ) --重建索引
    ALTER INDEX [idx_anino] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON )
    ALTER INDEX [idx_dnisno] on [dbo].[CDRSub_Current_Merge] rebuild WITH( ONLINE = ON )

    --删除走错的索引,不推荐
    exec configdb..spm_index_usages 'SiccDB','CDRSub_Current_Merge' --查看走错的索引最后一次使用时间,判断是否为无效索引! 对于无效索引 可以删除!


    use SiccDB
    go
    DROP INDEX [idx_anino] ON [dbo].[CDRSub_Current_Merge]

    --最后使用临时表
    修改写法,采用临时表,按正常的执行计划顺序,一步步落数

    注意:临时表会造成tempdb的page latch争用,并发量大的语句不推荐使用临时表

  • 相关阅读:
    C++中关于文本内容的实用操作集合(新)(添加一些关于文件流的介绍)
    C++_String_类字符串操作(转)
    C++下面关于字符串数组的一些操作
    windows下 berkerly db的安装配置(修正了关键步骤)
    代码审计基础知识
    Spring中的依赖查找和依赖注入
    JavaSE实现IoC
    LeetCode 87. Scramble String
    LeetCode 76. Minimum Window Substring
    LeetCode 169. Majority Element
  • 原文地址:https://www.cnblogs.com/justdba/p/5822303.html
Copyright © 2011-2022 走看看