Sen olamaz endeksi SQL Server 2000'de bir bit alanını anda Books Online'da belirtildiği gibi:
bit
Tam sayı veri türü 1, 0 veya NULL.
Uyarılar
Bit türündeki sütunlarda dizin olamaz.
Evet, milyonlarca satırdan yalnızca bir avuç satırınız varsa, bir dizin yardımcı olacaktır. Ama bu durumda yapmak istiyorsanız, sütun a yapmalısınız tinyint
.
Not : Enterprise Manager bit sütununda dizin oluşturmanıza izin vermez. Dilerseniz, bir bit sütununda manuel olarak da bir dizin oluşturabilirsiniz:
CREATE INDEX IX_Users_IsActiveUsername ON Users
(
IsActive,
Username
)
Ancak SQL Server 2000 aslında böyle bir indeksi kullanmaz - indeksin mükemmel bir aday olacağı bir sorgu çalıştırır, örneğin:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
SQL Server 2000 bunun yerine dizin yokmuş gibi davranarak bir tablo taraması yapar. Sütunu bir tinyint olarak değiştirirseniz, SQL Server 2000 bir dizin araması yapacaktır . Ayrıca aşağıdaki kapsanmayan sorgu:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
Bir dizin araması ve ardından bir yer imi araması gerçekleştirecektir.
SQL Server 2005, bit sütunlarındaki dizinler için sınırlı desteğe sahiptir. Örneğin:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
kaplama indeksi aracılığıyla bir indeks aramasına neden olur. Ancak kapsanmayan dava:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
bir indeks aramaya ve ardından bir yer imi aramasına neden olmaz, indeks aramanın ardından bir yer imi araması yapmak yerine bir tablo taraması (veya kümelenmiş indeks taraması) gerçekleştirir.
Deney ve doğrudan gözlemle doğrulanmıştır.