比較sql如下:
select a1 from vip a
where exists (select 1 from b where b.1 = a.1 and b.ispremember = '1')
and a.active = '1'
select a1 from vip a left join b on(b.1 = a.1 )
where b.ispremember = '1' and a.active = '1'
環境:a表關聯列:普通索引,b表關聯列:唯一索引
a表 6w數據量,b表200+。
兩條sql查詢出同樣的數據效率 記錄Log比較:
從比較結果得出:在建立索引的情況下,都差不多。
那么 a表增條件。
結論:使用 exists 與 left join 進行數據篩選,當都建立索引 且 使用得當(a表數據大 exists b表數據量小),查詢效率差異不大。
當 a表(主表)條件增多時,由於 left join 表數據增加,exists 效率較高。