我的一个存储过程有很长的执行时间(平均大约4到7分钟)。我想让它跑得更快。
我正在看执行计划,其中有两件事是大部分成本的来源。First代表了用于报告的一个主要表的“聚集索引扫描”成本的68%。该表有两个列的主键和2.000.000条记录。
第二,要求最高的任务占“合并连接”(左外部连接)成本的26%。这是通过外键将上面提到的表连接到上表中主键的两个列中的一个。
我检查了Index物理统计数据,这些表的索引都很好。
我能做什么来提高这个存储过程的性能?我需要在这些表上建立新的索引吗?set transaction isolation level read uncommitted语句是否有助于提高性能?
发布于 2009-11-07 20:12:04
如果您发布模式和查询等,这将是有用的,除了其他3个答案。
一些链接,从简单的谈话。好东西。
发布于 2009-11-07 16:51:38
您的方法是正确的:聚集索引扫描基本上遍历整个表,这是您想要避免的。查看聚集索引扫描的详细信息:应该有一个WHERE谓词告诉您扫描搜索的是哪个字段。确保此字段上有索引(或这些字段,如果有多个字段),然后再试一次。
发布于 2009-11-07 17:17:51
第一个查询导致68%的时间被花费-它看起来是什么样子?你的表和主键是什么样子的?
如果你找到一种方法来消除聚集索引扫描,事情应该会好得多-但为了帮助你找到问题,我们需要更多的信息!请编辑你的原始问题,并将这些东西添加到他们-谢谢!
https://dba.stackexchange.com/questions/12465
复制相似问题