我需要您对以下查询性能问题的建议。
select a.id
from table A
left join table B
on B.id = A.id
left join table B1
on B1.second_id = A.id;
这里表A具有10万条记录。但是表B的数据量为145GB。 [表B和B1相同,但必须用两个不同的列联接]
如果我使用一个左连接执行查询,如下所示,
select a.id from table A left join table B on B.id = A.id
更快地获取数据。但是,当我使用两次LEFT JOIN时,查询需要30分钟才能查询记录。
获得相应列上的索引。其他可减少执行时间的性能建议。
感谢和问候,Thiru.M
我怀疑
B1.second_id都没有索引
B1.second_id不是唯一的(或主键)
B1.second_id是多列索引的一部分,其中不是索引的第一列
如果在该列上有索引,则也可以尝试将索引移到其他卷,以免与主要数据检索发生争用。
对查询运行EXPLAIN来验证正在使用索引,而不是退回到145GB卷上的顺序扫描。
您也没有提到数据库有多少可用RAM。如果您的设置与查询结合在一起会导致系统交换,那么性能也会急剧下降。