Jawaban:
Statistik hanyalah bentuk metadata dinamis yang membantu pengoptimal kueri dalam membuat keputusan yang lebih baik. Misalnya, jika hanya ada selusin baris dalam sebuah tabel, maka tidak ada gunanya pergi ke indeks untuk melakukan pencarian; Anda akan selalu lebih baik melakukan pemindaian tabel penuh. Tetapi jika tabel yang sama tumbuh hingga sejuta baris, maka Anda mungkin akan lebih baik menggunakan indeks. Tetapi jika Anda kueri tabel itu pada kolom yang hanya memiliki sedikit nilai unik (misalnya itu mungkin kolom "jenis kelamin" yang hanya berisi "M" atau "F"), sebenarnya FTS mungkin lebih baik daripada kasus itu karena Anda ingin perlu mengambil blok pula untuk membangun set hasil. Sekarang katakanlah meja Anda adalah 99% "M" dan hanya 1% "F", kita harus FTS dalam satu kasus atau menggunakan indeks di yang lain. Tabel yang sama, permintaan yang sama, berpotensi empat rencana kueri yang berbeda tergantung pada konten tabel. Hal-hal semacam ini adalah "statistik" dan bersifat individual untuk setiap basis data - bahkan dua basis data dengan tabel dan struktur indeks yang sama akan memiliki statistik yang berbeda.
Singkatnya, dalam mesin basis data modern ada dua jenis optimasi kueri: menulis ulang SQL (optimasi berbasis aturan, seperti kompiler menulis ulang C Anda agar lebih efisien) dan memilih jalur data yang benar (optimasi berbasis biaya) , seperti kompiler JIT yang mengidentifikasi hotspot saat runtime). Anda hanya perlu khawatir tentang ini jika Anda melihat pengoptimal kueri melakukan sesuatu yang jelas salah (mis. Memilih FTS ketika Anda tahu indeks akan lebih baik).
Mereka digunakan oleh optimiser kueri (whitepaper pada MSDN) untuk melacak distribusi nilai dalam indeks dan / atau kolom.
Satu - satunya masalah Anda adalah memperbarui secara berkala : biarkan mesin DB melakukan tugasnya