use*_*150 7 sql t-sql sql-server performance sql-server-2005
我有一个非常糟糕的SQL查询.我将其追踪到桌面上执行的INNER JOIN.将此更改为LEFT join可显着提高性能(从6分钟到20秒) - 现在我知道2不等同,但......这就是我要问的
SELECT *
FROM SomeTable ST
JOIN BigTable BT ON BT.SomeID = ST.SomeID
AND BT.Something = ST.Something
AND BT.AnotherValue = '123'
Run Code Online (Sandbox Code Playgroud)
由于联接有额外的标准(和某些东西) - 正在将其更改为左连接产生相同的结果 - 但更快?
使用LEFT/INNER返回的结果是相同的,左边明显更快......
看起来反过来进行内部连接会带来更好的性能......
SELECT
*
FROM
BigTable AS BT
INNER JOIN
SomeTable AS ST
ON
BT.AnotherValue = '123'
AND
BT.SomeID = ST.SomeID
AND
BT.Something = ST.Something
Run Code Online (Sandbox Code Playgroud)
或使用子查询
SELECT
*
FROM
(SELECT * FROM BigTable WHERE AnotherValue = '123') AS BT
INNER JOIN
SomeTable AS ST
AND
BT.SomeID = ST.SomeID
AND
BT.Something = ST.Something
Run Code Online (Sandbox Code Playgroud)
另外,请确保BigTable.AnotherValue已正确索引。
| 归档时间: |
|
| 查看次数: |
1034 次 |
| 最近记录: |