Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Select语句性能_Sql Server_Select_Join - Fatal编程技术网

Sql server 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语句出现性能问题

这是:

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子句的顺序会有所帮助。首先执行一个删除了最多行的建议。

考虑所有建议并将它们汇总在一起,我能够设置一些索引,现在执行不到一秒钟。老实说,这几乎是立竿见影的

我的问题是,通过单击表属性,我看到主键被索引了,我错误地认为这是每个人都在谈论的。我查看了执行计划并运行了调优助手,将两者结合在一起,我意识到您也可以索引外键。这项工作现在已经完成,事情异常迅速


谢谢你的帮助,很抱歉提出了这么一个新问题。

索引是什么?您知道如何显示和分析查询计划吗?