Tidak, Anda tidak mengindeks semua kolom. Anda mengindeks kolom yang secara khusus terlibat dalam WHERE
klausa, dan terkadang jika mereka terlibat dalam ORDER BY
.
Dalam hal ini Anda ingin indeks pada type
:
SELECT name FROM users WHERE type='admin'
Dalam hal ini Anda ingin indeks pada active,type
:
SELECT name FROM users WHERE type='admin' AND active=1
Dalam hal ini Anda mungkin ingin indeks pada active,type,name
:
SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10
Semakin banyak indeks yang Anda tambahkan, penulisan akan semakin lambat tetapi pembacaan akan semakin cepat. Ini adalah trade-off klasik. Evaluasi dengan cermat indeks apa yang Anda butuhkan dan terapkan hanya jika akan ada manfaat nyata. Jangan hanya menampar mereka karena Anda merasa mereka seharusnya ada di sana.
Pada tabel super kecil, yang memiliki <1000 baris, indeks tidak akan banyak membantu karena pemindaian tabel tidak akan memakan waktu lama. Dalam hal apa pun yang tidak sepele, mereka sangat penting.
Jika Anda mengalami masalah kinerja, saya sarankan bahwa skema Anda adalah kendala terbesar, bukan kurangnya indeks.