Sql server Select语句性能
我正在执行的select语句出现性能问题 这是:Sql server Select语句性能,sql-server,select,join,Sql Server,Select,Join,我正在执行的select语句出现性能问题 这是: 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 (O
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 management studio访问的MS SQL server 2005。时间是查询分析器中经过的时间
有什么想法吗?您应该做的第一件事是查看SQL Server正在使用哪些索引(如果有)
您可能会受益于此查询中的一些内容,因为您仅使用
Lineinfo
和Order\u Header
中的列作为联接和查询限制(WHERE子句)。我在您的查询中没有看到任何特殊之处,因此,如果索引正确,它的执行速度应该会快得多,,行数不是很高
您是否在查询中涉及的表上有索引,是否尝试使用查询分析器的“显示执行计划”选项。基本上,您需要运行查询、循环执行计划并添加索引,这样您就不会看到任何完整的表扫描操作
如果您从SQL Management studio运行,那么您可以选择通过添加索引来自动调整查询,但我建议您自己尝试优化,以便更好地了解您正在做什么
问候
Massimo它不会影响性能,但不要编写诸如“从X选择*之类的查询”。避免使用星号符号,并拼写出各个列。调用此函数的代码仍将以这种方式工作,即使通过添加列更改了模式 正如其他人已经说过的,索引在这里是关键的
WHERE子句的顺序会有所帮助。首先执行一个删除了最多行的建议。考虑所有建议并将它们汇总在一起,我能够设置一些索引,现在执行不到一秒钟。老实说,这几乎是立竿见影的 我的问题是,通过单击表属性,我看到主键被索引了,我错误地认为这是每个人都在谈论的。我查看了执行计划并运行了调优助手,将两者结合在一起,我意识到您也可以索引外键。这项工作现在已经完成,事情异常迅速
谢谢你的帮助,很抱歉提出了这么一个新问题。索引是什么?您知道如何显示和分析查询计划吗?