【发布时间】:2010-12-13 15:31:17
【问题描述】:
我正在执行的选择语句出现性能问题。
这里是:
SELECT Material.*
FROM Material
INNER JOIN LineInfo ON Material.LineInfoCtr = LineInfo.ctr
INNER JOIN Order_Header ON LineInfo.Order_HeaderCtr = Order_Header.ctr
WHERE (Order_Header.jobNum = 'ttest')
AND (Order_Header.revision_number = 0)
AND (LineInfo.lineNum = 46)
执行语句需要 5-10 秒,具体取决于服务器负载。
一些表格统计数据:
- Material has 2,030,xxx records.
- Lineinfo has 190,xxx records
- Order_Header has 2,5xx records.
我的语句总共返回 18 行,其中包含大约 20-25 个数据字段。返回单个字段或所有字段没有区别。这种表现是典型的吗?我可以做些什么来改进它吗?
我尝试使用 sub select 来检索外键,IN 子句,我发现一个帖子,其中一个家伙说使用左外连接帮助了他。对我来说,它们都产生相同的 5 到 10 秒的执行时间。
这是通过 MS SQL 管理工作室访问的 MS SQL server 2005。时间是查询分析器中经过的时间。
有什么想法吗?
【问题讨论】:
-
索引是什么?您知道如何显示和分析查询计划吗?
标签: sql-server select join