MySQL高性能インデックスポリシー(二)

998 ワード

MySQL高性能インデックスポリシー(二)
適切なインデックス列の順序を選択するのは、B-Treeインデックスのみです.
適切な索引列の順序の選択
1つの複数の列のB-Treeインデックスでは、インデックス列の順序は、インデックスが最初に最も左の列にソートされ、次に2番目の列などであることを意味します.したがって、インデックスは、カラム順序に正確に適合するORDER BY、GROUP BY、DISTINCTなどの句のクエリ要件を満たすために、昇順または降順でスキャンすることができる.
インデックスのカラムの順序を選択する方法には、最も選択性の高いカラムをインデックスの先頭に配置する経験があります.ソートやグループ化を考慮する必要がない場合は、選択性が最も高い列を前に置くのが一般的です.このときのインデックスの役割は,WHERE条件の検索を最適化することだけであり,必要なデータ行を最も早くフィルタリングすることができる.ただし、実行頻度が最も高いクエリーに基づいてインデックス列の順序を調整する必要がある場合があります.
次のインデックス(title,shortName)があります.
次のsqlを使用して、インデックスの選択性に基づいてカラムの順序を決定します.
> select count(distinct title) / count(*) as title_selectivity,
count(distinct shortName) / count(*) as short_name_selectivity
from article

******************** 1. row *********************
     title_selectivity: 0.5000
short_name_selectivity: 1.0000
1 rows in set

title列のインデックス選択性はshortNameよりも高いことがわかります.一般的な経験則に基づいてtitleが前に並んでいるか利益があるかを決定することができる.しかし、私たちは具体的な状況に応じて調整しなければなりません.
=======END=======