由于SP性能不足导致SQL存储过程问题

时间:2010-02-15 09:33:46

标签: performance time sql-execution-plan

主要问题是在我的sp中存在可能导致性能不足的不同对象和逻辑。

我在SP上看到的内容以及SP中使用的表格 1-温度表如下图所示; (2临时表)

CREATE TABLE #TEMP_TABLE(   AB INT NOT NULL,   AC INT NOT NULL,   AD INT NOT NULL,   AF INT NULL,   AG INT NULL,   REFERENCE_NUMBER INT NULL  )  在#TEMP_TABLE(AB,AC,AD)上创建非集群索引IX_1

2-将流程插入到创建临时表中,作为SP

中的TEMP1

3- DROP TABLE #TEMP_TABLE    DROP TABLE#TEMP_TABLE2 在SP的最后

4-有两个表用于连接自己,但不是所有在JOIN操作符“on”情况下使用的字段。例如;在第一个表上声明了聚簇索引字段,加上第一个表的聚簇索引组中没有的日期列。

简而言之;群集和非群集索引很重要,但我应该以哪种顺序声明它们。我需要从哪个索引类型,告诉我索引的创建顺序,以便进一步使用JOIN进程等。

5-我应该使用表变量而不是临时表。好吧它会更好,但有很多问号不允许我使用表变量..

* INSERT到表变量不会利用并行性。 ref->

6-我听说过逻辑读物。我应该真正关心这些数字吗? 示例数据结果的详细信息如下所示(*)

7-执行计划......

Execution Plan http://i47.tinypic.com/9hs9qh.png

* OUTPUT:

  

表'CHANNEL'。扫描计数0,逻辑   读取2,物理读取0,预读   读取0,lob逻辑读取0,lob   物理读取0,lob预读读取   0.表'XYZ_DATE'。扫描计数1,逻辑读取2,物理读取0,   预读读取0,lob逻辑读取   0,lob物理读取0,lob   预读读取0.表   'XYZ01'。扫描计数3171,   逻辑读取13135,物理读取   153,预读读取0,lob逻辑   读取0,lob物理读取0,lob   预读读取0.表   'XYZ02'。扫描计数   5,逻辑读取51256,物理读取   0,预读读取0,lob逻辑   读取0,lob物理读取0,lob   预读读取0.表   '#TEMP_TABLE _________________________________________________________________________________________________________ 000000000840'。扫描计数0,逻辑读取97,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0.表   '工作表'。扫描计数0,逻辑   读取0,物理读取0,预读   读取0,lob逻辑读取0,lob   物理读取0,lob预读读取   0

     

(32行受影响)表   '#TEMP_TABLE2 ________________________________________________________________________________________________________ 000000000841'。扫描计数0,逻辑读取64,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0.表   '' XYZ03' 。扫描计数0,   逻辑读取107,物理读取0,   预读读取0,lob逻辑读取   0,lob物理读取0,lob   预读读取0.表''XYZ04''。   扫描计数32,逻辑读取129,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0.表   '#TEMP_TABLE _________________________________________________________________________________________________________ 000000000840'。扫描计数1,逻辑读取1,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0。

     

(21行(s)受影响)

     

(21行(s)受影响)表   'XYZ05'。扫描计数0,   逻辑读取87,物理读取0,   预读读取0,lob逻辑读取   0,lob物理读取0,lob   预读读取0.表   'XYZ01A'。扫描计数21,逻辑   读取147,物理读取0,   预读读取0,lob逻辑读取   0,lob物理读取0,lob   预读读取0.表'XYZ04'。   扫描计数0,逻辑读取84,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0.表   '#TEMP_TABLE2 ________________________________________________________________________________________________________ 000000000841'。扫描计数1,逻辑读取1,   物理读取0,预读读取0,   lob逻辑读取0,lob物理   读取0,lob预读读取0。

(*)

1 个答案:

答案 0 :(得分:0)

我确实放了一些索引然后扫描正在寻找.. 现在好多了。

仍在进行性能测试: 按照这里 - > Testing Stored Procedure performance