由于左连接而低速

时间:2015-04-07 10:20:50

标签: tsql

有些时候我知道查询的性能问题是因为左连接,我该怎么办? (建议替换子查询?)

想象一下,我们有表A和B,低速是因为左连接,你的推荐解决方案是什么? 任何形式的帮助表示赞赏

CREATE TABLE A ( a1 VARCHAR(10),
                 a2 INT,
                 a3 INT )

CREATE TABLE B ( b1  VARCHAR(10),
                 b2  INT,
                 ab3 INT )

INSERT INTO A
VALUES ( 'a1', 11, 91 ),
       ( 'a2', 12, 92 ),
       ( 'a3', 13, 93 ),
       ( 'a4', 14, 94 )

INSERT INTO B
VALUES ( 'b1', 21, 91 ),
       ( 'b2', 22, 92 ),
       ( 'b3', 23, 93 )

-------------------------
SELECT *
FROM      A
LEFT JOIN B ON a3 = ab3

1 个答案:

答案 0 :(得分:1)

根据我的经验,我建议你考虑以下事项 - 删除不必要的左连接
- 如果可以与内连接条件一起使用,则删除where子句 - 可以在列上创建索引 - 选择所需的列,避免对所有列使用* - 避免为列提供很长的长度