SQL Server memiliki sesuatu yang disebut "statistik multi-kolom", tetapi bukan itu yang dipikirkan orang.
Mari kita lihat tabel contoh berikut:
CREATE TABLE BadStatistics
(
IsArchived BIT NOT NULL,
Id INT NOT NULL IDENTITY PRIMARY KEY,
Mystery VARCHAR(200) NOT NULL
);
CREATE NONCLUSTERED INDEX BadIndex
ON BadStatistics (IsArchived, Mystery);
Dengan itu, dua statistik sedang dibuat pada dua indeks yang kami miliki:
Statistik untuk BadIndex:
+--------------+----------------+-------------------------+
| All density | Average Length | Columns |
+--------------+----------------+-------------------------+
| 0.5 | 1 | IsArchived |
+--------------+----------------+-------------------------+
| 4.149378E-06 | 37 | IsArchived, Mystery |
+--------------+----------------+-------------------------+
| 4.149378E-06 | 41 | IsArchived, Mystery, Id |
+--------------+----------------+-------------------------+
+--------------+------------+---------+---------------------+----------------+
| RANGE_HI_KEY | RANGE_ROWS | EQ_ROWS | DISTINCT_RANGE_ROWS | AVG_RANGE_ROWS |
+--------------+------------+---------+---------------------+----------------+
| 0 | 0 | 24398 | 0 | 1 |
+--------------+------------+---------+---------------------+----------------+
| 1 | 0 | 216602 | 0 | 1 |
+--------------+------------+---------+---------------------+----------------+
Statistik untuk indeks berkerumun:
+--------------+----------------+---------+
| All density | Average Length | Columns |
+--------------+----------------+---------+
| 4.149378E-06 | 4 | Id |
+--------------+----------------+---------+
+--------------+------------+---------+---------------------+----------------+
| RANGE_HI_KEY | RANGE_ROWS | EQ_ROWS | DISTINCT_RANGE_ROWS | AVG_RANGE_ROWS |
+--------------+------------+---------+---------------------+----------------+
| 1 | 0 | 1 | 0 | 1 |
+--------------+------------+---------+---------------------+----------------+
| 240999 | 240997 | 1 | 240997 | 1 |
+--------------+------------+---------+---------------------+----------------+
| 241000 | 0 | 1 | 0 | 1 |
+--------------+------------+---------+---------------------+----------------+
(Saya telah mengisi tabel dengan data sampel acak di mana sekitar sepersepuluh dari baris tidak diarsipkan. Saya menjalankan pembaruan statistik pemindaian penuh setelah itu.)
Mengapa histogram statistik dua kolom hanya menggunakan satu kolom? Saya tahu bahwa banyak orang telah menulis tentang bahwa itu tidak , tapi apa alasan itu? Dalam hal ini, ini membuat keseluruhan histogram menjadi kurang bermanfaat, karena kolom pertama hanya memiliki dua nilai. Mengapa statistik dibatasi secara sewenang-wenang seperti itu?
Harap dicatat bahwa pertanyaan ini tidak mengacu pada histogram multi-dimensi, yang merupakan binatang yang sama sekali berbeda. Ini tentang histogram satu dimensi dengan dimensi tunggal menjadi tupel yang berisi masing-masing, beberapa kolom.