由于左连接速度较慢
问题描述:
有时候我知道查询的性能问题是因为左连接,我该怎么办? (建议替换一个子查询?)由于左连接速度较慢
想象一下,我们有表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
答
基于我的经验,我会建议你考虑以下几点
- 删除不必要的左联接
- 删除where子句,如果它能够随着内部使用的连接条件
- 可在您的列创建索引
- 选择所需的列,避免使用*对所有列
- 避免你列给大长度
+0
小修正:“删除'WHERE'子句,如果它可以与** INNER JOIN **条件一起使用” –
+0
是的内部加入 谢谢 –
你有任何索引设置在这些表/列上? –
正如我检查索引在这种情况下不起作用 – user3742119
我希望你会在每个表中有一个主键列,所以你有这些列的聚集索引。然后你有没有尝试在A(a3)和B(ab3) – Stephan