Saya selalu melihat orang mengatakan bahwa indeks melambat update
, delete
dan insert
. Ini digunakan sebagai pernyataan selimut, seolah-olah itu mutlak.
Sementara menyetel basis data saya untuk meningkatkan kinerja, saya terus menghadapi situasi ini yang tampaknya bertentangan dengan aturan itu secara logis untuk saya, dan di mana pun saya tidak dapat menemukan orang mengatakan atau menjelaskan dengan cara apa pun sebaliknya.
Dalam SQL Server, dan saya percaya / menganggap sebagian besar DBMS lainnya, indeks Anda dibuat berdasarkan kolom spesifik yang Anda tentukan. Sisipan dan penghapusan akan selalu memengaruhi seluruh baris, jadi tidak mungkin mereka tidak akan memengaruhi indeks, tetapi pembaruan tampaknya sedikit lebih unik, mereka hanya dapat memengaruhi kolom tertentu saja secara spesifik.
Jika saya memiliki kolom yang tidak termasuk dalam indeks apa pun dan saya memperbaruinya, apakah itu diperlambat hanya karena saya memiliki indeks pada kolom lain dalam tabel itu?
Sebagai contoh, katakan dalam User
tabel saya, saya memiliki satu atau dua indeks, kunci utama yang merupakan kolom Peningkatan Identitas / Otomatis, dan mungkin yang lain pada beberapa kolom kunci asing.
Jika saya memperbarui kolom tanpa indeks langsung di atasnya, seperti misalnya nomor telepon atau alamat mereka, apakah pembaruan ini melambat karena saya memiliki indeks pada tabel ini di kolom lain di kedua situasi? Kolom yang saya perbarui tidak dalam indeks, jadi secara logis, indeks tidak boleh diperbarui, bukan? Jika ada, saya akan berpikir mereka dipercepat jika saya menggunakan indeks di klausa WHERE.
so there is no way they will not affect the index
kecuali untuk indeks yang difilter ...