广告
返回顶部
首页 > 资讯 > 数据库 >SQL Server索引优化常用查询
  • 608
分享到

SQL Server索引优化常用查询

SQLServer索引优化常用查询 2014-10-16 13:10:29 608人浏览 无得
摘要

1.1、查找缺失索引 SELECT A.USER_SEEKS 查找次数,A.USER_SCANS 扫描次数, ROUND(A.AVG_TOTAL_USER_COST,2) 减少的用户查询的平均成本,A.AVG_USER_

SQL Server索引优化常用查询

1.1、查找缺失索引

SELECT A.USER_SEEKS 查找次数,A.USER_SCANS 扫描次数,
    ROUND(A.AVG_TOTAL_USER_COST,2) 减少的用户查询的平均成本,A.AVG_USER_IMPACT 可能获得的平均百分比收益,
    ROUND((A.USER_SEEKS+A.USER_SCANS)*A.AVG_TOTAL_USER_COST*A.AVG_USER_IMPACT/100,2) 可能的改进优势,
    A.LAST_USER_SEEK 最近查找时间,A.LAST_USER_SCAN 最近扫描时间,C.[STATEMENT] 表名,
    "CREATE INDEX [IDX_"
        +CONVERT(VARCHAR,A.GROUP_HANDLE)+"_"+CONVERT(VARCHAR,C.INDEX_HANDLE)+"_"+REPLACE(REPLACE(REPLACE(C.[STATEMENT],"]",""),"[",""),".","")
        +"]"+" ON "+C.[STATEMENT]+ " ("
        +ISNULL(C.EQUALITY_COLUMNS,"")
        +CASE WHEN NOT C.EQUALITY_COLUMNS IS NULL AND NOT C.INEQUALITY_COLUMNS IS NULL THEN "," ELSE "" END
        +ISNULL(C.INEQUALITY_COLUMNS,"")
        +")"
        +ISNULL(" INCLUDE ("+C.INCLUDED_COLUMNS+")","") "创建语句"
FROM sys.dm_db_missing_index_group_stats A INNER JOIN sys.dm_db_missing_index_groups B ON A.GROUP_HANDLE=B.INDEX_GROUP_HANDLE
    INNER JOIN sys.dm_db_missing_index_details C ON B.INDEX_HANDLE=C.INDEX_HANDLE
WHERE C.DATABASE_ID=DB_ID()    --默认当前数据库,若指定数据库则使用DB_ID(["DB_NAME"])
ORDER BY ROUND(A.USER_SEEKS*A.AVG_TOTAL_USER_COST*A.AVG_USER_IMPACT/100,2) DESC

1.2、查找未使用索引

SELECT C.NAME 表名,B.INDEX_ID 索引ID,B.NAME 索引名,
    A.USER_SEEKS 搜索次数,A.USER_SCANS 扫描次数,A.USER_LOOKUPS 查找次数,
    A.USER_UPDATES 更新次数,E.TABLEROWS 表行数,
    "DROP INDEX "+QUOTENAME(B.NAME)+" ON "+QUOTENAME(D.NAME)+"."+QUOTENAME(OBJECT_NAME(A.OBJECT_ID)) "删除语句"
FROM sys.dm_db_index_usage_stats A INNER JOIN sys.indexes B ON A.INDEX_ID=B.INDEX_ID AND A.OBJECT_ID=B.OBJECT_ID
    INNER JOIN sys.objects C ON A.OBJECT_ID=C.OBJECT_ID
    INNER JOIN sys.schemas D ON C.schema_id=D.schema_id
    INNER JOIN 
        (
            SELECT INDEX_ID,OBJECT_ID,SUM(ROWS) TABLEROWS
            FROM sys.partitions
            GROUP BY INDEX_ID,OBJECT_ID
        ) E ON A.INDEX_ID=E.INDEX_ID AND A.OBJECT_ID=E.OBJECT_ID
WHERE OBJECTPROPERTY(A.OBJECT_ID,"IsUserTable")=1 AND A.DATABASE_ID=DB_ID()
    AND B.TYPE_DESC="NONCLUSTERED" AND B.IS_PRIMARY_KEY=0 AND B.IS_UNIQUE_CONSTRAINT=0
    --AND C.NAME="INVMB"    --根据实际修改表名
ORDER BY (A.USER_SEEKS+A.USER_SCANS+A.USER_LOOKUPS) ASC

当更新次数很大而搜索次数及扫描次数很小或为0时,说明该索引一直在更新但基本不被使用,因而也未对查询提供多少帮助,所以可以考虑删除。

1.3、查看索引使用情况

SELECT OBJECT_NAME(A.[OBJECT_ID]) 表名,B.INDEX_ID 索引ID,B.[NAME] 索引名称,B.[TYPE_DESC] 索引类型,
    A.USER_SEEKS+A.USER_SCANS+A.USER_LOOKUPS 读,A.USER_UPDATES 写,B.FILL_FACTOR 填充因子
FROM sys.dm_db_index_usage_stats A INNER JOIN sys.indexes B ON A.[OBJECT_ID]=B.[OBJECT_ID] AND A.INDEX_ID=B.INDEX_ID
WHERE OBJECTPROPERTY(A.[OBJECT_ID],"ISUSERTABLE")=1 
    AND A.DATABASE_ID=DB_ID()    --默认当前数据库,若指定数据库则使用DB_ID(["DB_NAME"])
ORDER BY OBJECT_NAME(A.[OBJECT_ID]),A.USER_UPDATES DESC,A.USER_SEEKS+A.USER_SCANS+A.USER_LOOKUPS DESC

 

您可能感兴趣的文档:

--结束END--

本文标题: SQL Server索引优化常用查询

本文链接: https://www.lsjlt.com/news/8787.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server索引优化常用查询
    1.1、查找缺失索引 SELECT A.USER_SEEKS 查找次数,A.USER_SCANS 扫描次数, ROUND(A.AVG_TOTAL_USER_COST,2) 减少的用户查询的平均成本,A.AVG_USER_...
    99+
    2014-10-16
    SQL Server索引优化常用查询
  • SQL Server高级进阶之索引优化查询
    1.1、查找缺失索引 SELECT A.USER_SEEKS 查找次数,A.USER_SCANS 扫描次数, ROUND(A.AVG_TOTAL_USER_COST,2) 减少的用户查询的平均成本,A.AVG_USER_...
    99+
    2014-08-11
    SQL Server高级进阶之索引优化查询
  • Sql Server 中怎么优化索引
    Sql Server 中怎么优化索引,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。代码如下: --Begin Index(索引) 分析优...
    99+
    2022-10-18
  • mongodb查询与索引优化
    索引:    查询语句:        db.products.find({            "details.manufacturer": "acme",            "pricing.s...
    99+
    2022-10-18
  • SQL Server高级进阶之索引优化
    1.1、查找缺失索引 SELECT A.USER_SEEKS 查找次数,A.USER_SCANS 扫描次数, ROUND(A.AVG_TOTAL_USER_COST,2) 减少的用户查询的平均成本,A.AVG_USER_...
    99+
    2016-07-26
    SQL Server高级进阶之索引优化
  • openGauss SQL引擎(下)——查询优化
    ...
    99+
    2019-09-04
    openGauss SQL引擎(下)——查询优化
  • SQL Server中怎么优化多表查询
    这期内容当中小编将会给大家带来有关SQL Server中怎么优化多表查询,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.执行路径ORACLE的这个功能大大地提高了SQL...
    99+
    2022-10-18
  • SQL Server中怎么优化查询速度
    这期内容当中小编将会给大家带来有关SQL Server中怎么优化查询速度,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  优化SQLServer查询速度的方法有哪些  1...
    99+
    2022-10-18
  • SQL Server索引优化的方法是什么
    这篇“SQL Server索引优化的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL Server索引优化的方...
    99+
    2023-06-27
  • SQL使用复合索引实现数据库查询的优化
    目录一 问题二 分析三 解决方案一 问题 程序再在一次查询时出现查询时间过长,每次查询要1-2分钟业务反馈用户操作体验很差,sql如下: select * FROM edi...
    99+
    2022-11-13
  • SQL Server查询优化中的两个选项
    本文中,我们将介绍两个SQL Server中的可用概念,它们是使用SQL Server时值得注意的技术。 1.       &nbs...
    99+
    2022-10-18
  • 优化SQL Server 索引的小技巧有哪些
    优化SQL Server 索引的小技巧有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在本文中,我将说明如何用SQL Se...
    99+
    2022-10-19
  • MySQL索引原理及慢查询优化
      MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,...
    99+
    2022-05-31
    MySQL
  • MySQL查询性能优化索引下推
    目录前言1. 索引下推的作用2. 案例实践3. 索引下推配置4. 索引下推原理剖析5. 索引下推应用范围前言 前面已经讲了mysql的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种方式索引潜水 ...
    99+
    2022-08-16
    MySQL查询性能优化 MySQL索引下推
  • 浅谈 SQL Server 查询优化与事务处理
    之前我们简单了解了各种查询的用法,然而在实际开发中还会用到一些比较高级的数据处理和查询,包括索引、视图、存储过程和触发器。从而能够更好地实现对数据库的操作、诊断及优化。 什么是索引呢,索引是 SQL Ser...
    99+
    2022-10-18
  • 如何在PHP开发中优化SQL查询语句和索引使用?
    如何在PHP开发中优化SQL查询语句和索引使用?在PHP开发中,数据库查询是非常常见的操作。然而,当数据量增大时,查询性能可能受到影响,导致应用程序变慢。为了提高查询性能,我们需要优化SQL查询语句和索引的使用。本文将介绍一些优化技巧和最佳...
    99+
    2023-11-02
    PHP优化 SQL查询 索引使用
  • 优化SQL Server索引的技巧是什么样的
    本篇文章给大家分享的是有关优化SQL Server索引的技巧是什么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。影响到数据库性能的最大因素就是索引。由于该问题的复杂性,我只...
    99+
    2023-06-05
  • sql索引查询的用法有哪些
    SQL索引查询的用法有以下几种:1. 等值查询:使用索引可以快速定位到指定值的记录,例如:```SELECT * FROM ...
    99+
    2023-09-05
    sql
  • 利用 SQL Server 过滤索引提高查询语句的性能分析
    大家好,我是只谈技术不剪发的 Tony 老师。 Microsoft SQL Server 过滤索引(筛选索引)是指基于满足特定条件的数据行进行索引。与全表索引(默认创建)相比,设计...
    99+
    2022-11-12
  • MySQL数据库中怎么优化索引查询
    这篇文章给大家介绍MySQL数据库中怎么优化索引查询,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题描述:我们要访问的表是一个非常大的表,四千万条记录,id是主键,program_i...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作