Apakah ada alasan untuk menggunakan indeks untuk tabel yang sangat kecil (hingga 1000 baris)?

9

Selama pengembangan aplikasi saya memiliki banyak tabel yang menyimpan jumlah data "kecil" (biasanya nilai 10-40, id+ valuedan kadang-kadang type) yang menyimpan atribut untuk "objek", seperti segar / busuk, merah / hijau / biru untuk produk.

Saya tidak memasukkan atribut ini ke tabel produk karena komponen elektronik tidak dapat segar, dan gas oksigen tidak boleh merah dan tabel tidak dapat memiliki baris tak terhitung ...

Untuk menyimpan atribut, saya menggunakan tabel kecil khusus tempat 2-3 bidang: iduntuk menautkan, nameuntuk ditampilkan dalam aplikasi dan kadang-kadang typejika grup atribut dalam kategori yang sama.

"Objek" primer dikaitkan dengan atribut melalui tabel banyak ke banyak.

Apakah ada alasan untuk membuat dan memelihara indeks untuk "kamus kecil" dengan kurang dari 1000 item (biasanya 10-40)?

Basis data target saya adalah Oracle tetapi saya harap jawaban vendor independen ...

Saya mengisi - tidak, tetapi tidak memiliki keterampilan teknis untuk membenarkan pengisian saya ...

gavenkoa
sumber

Jawaban:

14

Secara umum ya. Dalam kekurangan indeks, pola akses harus memeriksa setiap baris, hanya untuk melihat apakah yang Anda butuhkan atau tidak. Masalahnya bukan ukuran tabel, tetapi konkurensi. Bergantung pada tingkat isolasi Anda, pemindaian Anda dapat memblokir transaksi yang tidak dikomit hanya untuk menunggu baris yang pada akhirnya 'tidak menarik' untuk dibuka. Karena pemindaian Anda dijamin untuk 'melihat' di setiap baris, setiap pemindaian akan memblokir di balik tulisan apa pun (masukkan, hapus, atau perbarui). Oracle default untuk snapshot isolasi yang OK dalam situasi ini (tidak ada pemblokiran) tetapi vendor lain default untuk sesuatu yang lain, misalnya. SQL Server akan default ke Baca berkomitmen yang tidak blok.

Dengan indeks yang hadir, pola akses Anda hanya akan melihat baris yang relevan (dalam rentang kunci yang diinginkan) sehingga peluang statistik murni untuk memukul konflik kunci sangat berkurang.

Remus Rusanu
sumber
Terima kasih atas penjelasannya, saya punya pertanyaan lanjutan (walaupun sekarang 3 tahun kemudian). Bagaimana dengan tabel yang sangat kecil dengan maksimum 3 atau 4 baris?
Rob
Meja kecil Cert (yang muat dalam 1-2 Halaman) kemungkinan besar akan dipindai
Remus Rusanu
@Remus diharuskan membuat Index di MySQL
Singh Kailash