Anda tidak dapat mengindeks bidang bit di SQL Server 2000, seperti yang ditunjukkan di Buku Daring pada saat itu:
sedikit
Tipe data integer 1, 0, atau NULL.
Catatan
Kolom jenis bit tidak boleh memiliki indeks di atasnya.
Ya, jika Anda hanya memiliki sedikit baris, dari jutaan, indeks akan membantu. Tetapi jika Anda ingin melakukannya dalam hal ini Anda perlu membuat kolom a tinyint
.
Catatan : Manajer Perusahaan tidak akan membiarkan Anda membuat indeks pada kolom bit. Jika mau, Anda masih dapat membuat indeks secara manual pada kolom bit:
CREATE INDEX IX_Users_IsActiveUsername ON Users
(
IsActive,
Username
)
Tetapi SQL Server 2000 tidak akan benar-benar menggunakan indeks seperti itu - menjalankan kueri di mana indeks akan menjadi kandidat yang sempurna, misalnya:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
SQL Server 2000 akan melakukan pemindaian tabel, bertindak seolah-olah indeks tersebut bahkan tidak ada. Jika Anda mengubah kolom menjadi tinyint SQL Server 2000 akan melakukan pencarian indeks. Juga, kueri tidak tercakup berikut:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
Ini akan melakukan pencarian indeks, diikuti oleh pencarian bookmark.
SQL Server 2005 memiliki dukungan terbatas untuk indeks pada kolom bit. Sebagai contoh:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
akan menyebabkan pencarian indeks melalui indeks penutup. Tapi kasus yang tidak tertutup:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
tidak akan menyebabkan pencarian indeks diikuti oleh pencarian bookmark, ia akan melakukan pemindaian tabel (atau pemindaian indeks berkerumun), daripada melakukan pencarian indeks yang diikuti dengan pencarian bookmark.
Diverifikasi dengan eksperimen dan observasi langsung.