【发布时间】:2010-02-15 09:33:45
【问题描述】:
主要问题是在我的 sp 中有不同的对象和逻辑可能会导致性能不足。
我在 SP 上看到的内容以及 SP 中正在使用的表格 1- 临时表,如下所示; (2个临时表)
创建表#TEMP_TABLE( AB INT 非空, AC INT 不为空, AD INT 非空, AF INT NULL, AG INT NULL, REFERENCE_NUMBER INT NULL ) 在#TEMP_TABLE(AB、AC、AD)上创建非聚集索引 IX_1
2- 将进程插入到创建临时表中作为 SP 中的 TEMP1
3- 删除表 #TEMP_TABLE 删除表 #TEMP_TABLE2 在SP的末尾
4- 有两个表用于连接自己,但不是所有使用 JOIN 运算符的“on”情况的字段。例如;在第一个表上声明了聚集索引字段,加上不在第一个表的聚集索引组中的日期列..
简称;聚集和非聚集索引很重要,但我应该按什么顺序声明它们。我需要哪种索引类型,告诉我创建索引的顺序,以便进一步使用 JOIN 流程等。
5- 我应该使用表变量而不是临时表。好的会更好,但是有很多问号不允许我使用表变量..
*插入表变量不会利用并行性。 ref->
6- 我听说过逻辑读取。我真的应该关心这些数字吗? 示例数据结果的详细信息如下所示 (*)
7- 执行计划...
*输出:
表“频道”。扫描计数 0,逻辑 读取 2,物理读取 0,预读 读取 0,lob 逻辑读取 0,lob 物理读取 0,lob 预读 0. 表“XYZ_DATE”。扫描计数 1,逻辑读取 2,物理读取 0, read-ahead 读取 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, read-ahead 读取 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 行受影响)
(受影响的 21 行)表格 'XYZ05'。扫描计数 0, 逻辑读取 87,物理读取 0, read-ahead 读取 0,lob 逻辑读取 0, lob 物理读取 0, lob 预读读数为 0。 表 'XYZ01A'。扫描计数 21,逻辑 读取 147,物理读取 0, read-ahead 读取 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。
(*)
【问题讨论】:
-
重建相关表的索引,然后再次运行查询...
标签: performance time sql-execution-plan