Seringkali saya perlu menjalankan kueri terhadap tabel besar yang tidak memiliki indeks yang tepat. Jadi saya meminta DBA untuk membuat indeks tersebut. Hal pertama yang dia lakukan adalah melihat statistik tabel dan melihat ukuran ruang indeks.
Seringkali dia akan memberitahu saya untuk mencari solusi alternatif karena "indeksnya sudah lebih besar dari tabel". Dia merasa indeks harus lebih kecil dari data, karena, dia mengatakan kepada saya "apakah Anda pernah melihat indeks dalam sebuah buku? Ini jauh lebih kecil daripada buku itu sendiri, dan begitulah seharusnya indeks tabel".
Saya tidak merasa filosofinya benar, tetapi saya tidak bisa menantangnya karena dia adalah DBA utama dan saya seorang pengembang. Saya merasa jika permintaan membutuhkan indeks, indeks hanya harus dibuat, alih-alih menemukan "solusi" yang hanya membuat SP yang tidak dapat dibaca dan tidak dapat dipelihara.
Saya hanya memilih kolom yang diperlukan. Masalahnya adalah saya memfilter berdasarkan tanggal sehingga mesin perlu melakukan pemindaian tabel agar sesuai dengan kolom. Kueri berjalan sekali sehari, pada malam hari, untuk mengumpulkan statistik, tetapi butuh 15 menit untuk menjalankan (kami memiliki aturan keras dan cepat lainnya: Tidak ada prosedur yang harus memakan waktu lebih dari 3 menit).
DBA menunjukkan statistik indeks kepada saya. Ada sekitar 10 indeks pada tabel itu, yang hanya 6 digunakan (statistik menunjukkan nol hit ke 4 dari mereka). Ini adalah sistem besar dengan lebih dari 20 pengembang yang berpartisipasi. Indeks dibuat untuk alasan apa pun, dan mungkin tidak lagi digunakan.
Kami diharuskan untuk mendukung SQL Server 2008, karena itulah pengujian DB berjalan. Tetapi klien semuanya pada 2014 dan 2016.
sumber