データベースにいくつかの列があり、ほとんどがvarchar255です。アクセスは1回だけですが、ログインしているユーザーのページの読み込み/リクエストごとに1回読み込まれます。(ほとんどの場合、ユーザーの設定などが含まれています)。
私の質問は、これらの列にインデックスを作成する必要があるかどうかです。一度だけ読み取ってこれらの列のように格納するのではなく、複数のクエリで使用される他の列のインデックスをすでに持っています。
データベースにいくつかの列があり、ほとんどがvarchar255です。アクセスは1回だけですが、ログインしているユーザーのページの読み込み/リクエストごとに1回読み込まれます。(ほとんどの場合、ユーザーの設定などが含まれています)。
私の質問は、これらの列にインデックスを作成する必要があるかどうかです。一度だけ読み取ってこれらの列のように格納するのではなく、複数のクエリで使用される他の列のインデックスをすでに持っています。
ソートまたは検索に使用される列のインデックスのみが必要です。
すなわち。それらは、、、、または句にJOIN
表示されます。WHERE
HAVING
GROUP
ORDER BY
それでも、厳密には必要ありません。
答えは状況によって異なります.....クエリの計画を見てください。インデックスを追加することでメリットがありますか?
クエリは、現在そこにあるインデックスですでにカバーされている可能性があります。
インデックスを追加すると、更新/挿入が遅くなることに注意してください。
答えは、列がselectで使用されているだけなのか、where句や結合、その他の並べ替え/クエリ操作で使用されているのかによって異なると思います。
前者の場合はインデックスがなく、後者の場合はインデックスを使用するとクエリが高速になります(通常は)
私が間違っていなければ、列のインデックス作成は、そこにいるユーザーの数と各ユーザーの設定のサイズにも依存します。たとえば、1000000人のユーザー設定が保存されている場合、それは間違いなくインデックス作成に役立ちます。