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.

ソート - Wikipedia