MySQL で作ったテーブルに index を貼るべきかどうかの判断基準
tickets
テーブルがあると仮定する。
この tickets
テーブルには n レコード格納されている。
2分木ソートの場合、ソートにかかる計算量は O(n log n) で、index を配備するのにかかる計算量は O(log n) となるため、 単位時間あたりのソート回数を x, 単位時間あたりの更新回数を y とする(レコード更新のたびに index は更新される)と、 x * n * log n > y * log n もとい、x * n > y が成り立てば index を貼るべきである。
x はキャッシュなどを考慮しつつ、アクセスログなどから算出できるし、y はbatchであったり、管理画面であったり、アプリケーション内のコードなどを見れば算出できる。
ref.