有些时候我知道查询的性能问题是因为左连接,我该怎么办? (建议替换子查询?)
想象一下,我们有表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
答案 0 :(得分:1)
根据我的经验,我建议你考虑以下事项
- 删除不必要的左连接
- 如果可以与内连接条件一起使用,则删除where子句
- 可以在列上创建索引
- 选择所需的列,避免对所有列使用*
- 避免为列提供很长的长度