我必须提高用于报告的大约75个存储过程(由其他人创建)的性能。解决方案的第一部分是创建大约6个非规范化表,这些表将用于大部分报告。现在,我已经创建了表,这是一项艰巨的任务,即确定应该创建哪些索引以最好地改善这些存储过程的性能。
我很好奇,看看是否有人对找到哪些列应该包含在索引中有什么建议?我已经考虑过使用Profiler / DTA,或者可能采用某种查询(例如下面的查询)来找出受欢迎的专栏。
SELECT name, Count(so.name) as hits, so.xtype
from syscomments as sc
INNER JOIN sysobjects so ON sc.id=so.id
WHERE sc.text like '%ColumnNamme%'
AND xtype = 'P'
Group by name,so.xtype
ORDER BY hits desc
让我知道您是否有什么想法可以帮助我不必手工研究这75个过程。
另外,每天仅在此数据库上执行一次插入,因此对我而言,插入性能不是什么大问题。
最佳答案
您可以在SSMS中使用SQL Server事件探查器来查看表的内容和方式,然后使用事件探查器中的数据库调整工具至少使您从正确的路径开始。我知道大多数DBA可能都会推荐我这么做,但是对于像我本人这样的非DBA类型,这至少为我们提供了一个起点。
关于sql-server - 关于识别需要创建哪些索引的任何建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2060283/