WEB开发网
开发学院数据库MSSQL Server SQL Server: 揭开隐藏数据的面纱,优化应用程序性... 阅读

SQL Server: 揭开隐藏数据的面纱,优化应用程序性能

 2009-02-07 10:20:32 来源:WEB开发网   
核心提示: Figure 4Cost of Missing Indexes请注意,这些结果没有指定应在必需索引中创建列的顺序,SQL Server: 揭开隐藏数据的面纱,优化应用程序性能(6),为确定顺序,您应检查整体 SQL 代码库,根据上述原因,再次忽略系统列所产生的影响,一般而言,选择最多的列应

Figure 4Cost of Missing Indexes

请注意,这些结果没有指定应在必需索引中创建列的顺序。为确定顺序,您应检查整体 SQL 代码库。一般而言,选择最多的列应在索引中最先显示。

还要指出的是,在计算缺失索引的开销时,只考虑用户列(如 user_seeks 和 user_scans)。这是因为系统列一般代表对统计数据、数据库一致性检查 (DBCC) 和数据定义语言 (DDL) 命令的使用,而且这些列对完成业务功能(与数据库管理功能相比较)不太重要。

请记住,对于在基础表中发生任何数据修改时可能产生的额外索引开销,要特别引起注意,这非常重要。因此,应对基础 SQL 代码库进行进一步的研究。

如果您发现系统建议将许多列作为要包含的列,则应检查基础 SQL,因为这可能表示正在使用 catchall“SELECT *”语句——如果确实如此,则可能要修改选择查询。

未使用的索引

未使用的索引可能会对性能产生不良影响。这是因为,修改基础表数据后,可能也需更新索引。当然,这需要额外的时间,而且可能增加阻塞的几率。

如果执行查询时使用某个索引,而且由于将更新应用到基础表数据而更新了该索引,则 SQL Server 会更新相应的索引使用详细信息。可以通过查看这些使用详细信息来确定任何未使用的索引。

通过 sys.dm_db_index_usage_stats DMV 可以了解使用索引的频率和程度。它已联接到 sys.indexes DMV,后者包含创建索引时所使用的信息。您可以在各用户列中检查值 0 以确定未使用的索引。根据上述原因,再次忽略系统列所产生的影响。使用图 5 所示的脚本可以确定开销最高的未使用索引。

SQL Server: 揭开隐藏数据的面纱,优化应用程序性能Figure5Identifying Most Costly Unused Indexes

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 揭开

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接