一個sql語句中如果有子查詢,會較大的影響查詢效率。
在子查詢的表跟父查詢的表有關系的情況,可以通過表關聯的方式優化效率。
例如:
select
a.id,
a.name,
(select b.name from table2 b where b.code = a.id) as comename
from table1 a
可以優化成:
select
a.id,
a.name,
b.name as comename
from table1 a,table2 b
where b.code = a.id
經試驗在數據量較大時,這種寫法在性能上至少可以提升30-50%的效率,具體提升多少取決於業務邏輯復雜程度。
這種寫法有一個弊端,第二種寫法會把 table1 表中有值,但是table2 中comename為空的數據屏蔽掉,導致第一種
查詢結果數量大於第二種,在使用時要注意業務要求。
查詢數據量大的時候,首先要考慮的優化方案是:添加索引