兩張表左連接索引優化
<code> mysql>explainselect
*from
news a leftjoin
new_type bon
a.type_id=b.TypeId;/<code>
結果:我們看到兩張表都是全表掃描,type類型全是ALL,此時性能最差
<code> mysql>create index type_id
on
news
(type_id
); mysql>explainselect
*from
news a leftjoin
new_type bon
a.type_id=b.TypeId;/<code>
結果:左連接給左表加完索引,沒有任何效果,並且還是全表掃描,效率極差。
<code> mysql>create index type_id
on
news
(type_id
); mysql>explainselect
*from
news a leftjoin
new_type bon
a.type_id=b.TypeId;/<code>
結果:左連接給右表加完索引,使用到了索引,且還是ref級別的。
兩張表右連接索引優化
<code> mysql>explainselect
*from
news a rightjoin
new_type bon
a.type_id=b.TypeId;/<code>
結果:右連接給右表加完索引,沒有任何效果,並且還是全表掃描,效率極差。
<code> mysql>explainselect
*from
news a leftjoin
new_type bon
a.type_id=b.TypeId;/<code>
結果:右連接給左表加完索引,使用到了索引,且還是ref級別的。
注意(單表查詢)多條件查詢:
- 我們創建的聯合索引的順序是category_id、comments、views
結果:雖然使用到了index索引(全表掃描,只是掃描表的時候按照索引次序 進行而不是行。主要優點就是避免了排序, 但是開銷仍然非常大),但是產生了文件排序,性能很差
- 創建category_id、views聯合索引
結論:如果在where條件中如果有三個查詢查詢條件key1、key2、key3,其中key2條件是範圍查詢,
則需要創建key1、key3的複合索引。
結論:
- 左連接索引加右表。
- 右連接索引加左表