Diziler için seçilen sütunların satırlar arasında iyi ayrım yapması gerektiğini okudum, yani dizin sütunları aynı değere sahip çok sayıda satır içermemelidir. Bu, booleanların veya cinsiyet gibi bir enumun bir endeks için kötü bir seçenek olacağını öne sürecektir.Endekslerde boolean veya enum sütunlarını kullanma?
Kullanıcıları cinsiyete göre ve belirli bir veritabanında bulmak istediğimi söylüyorsam, kullanıcıların yalnızca% 2'si kadındır, o zaman bu durumda cinsiyet sütunu, kadın kullanıcıları alırken yararlı bir dizin gibi görünür ancak tüm erkek kullanıcıları alırken değil.
Böyle bir sütuna bir indeks koymak genellikle iyi bir fikir olabilir mi?
Cevabınız iyidir, ancak cinsiyet yerine, sadece 100'ü bulan büyük şehirleri veya eyaletleri saklıyoruz, 1 milyon kullanıcı arasında dağıtılıyor, bu yüzden muhtemelen 10 bin kullanıcı aynı değere sahip olacak ve eğer sadece belirli bir şehir için, DB'nin 1 milyon satırı tekrarlamasını istemiyorum ve normal b + endeksi bu amaç için çok kötü olacak, bu nedenle bu durumda sizin öneriniz ne olacak? –
@Akash: Diğer iki cevaba bakın - bir bitmap dizini uygun olabilir, ancak sorgularınızın ne olduğuna bağlıdır. Tek şehir için tüm 10.000 kullanıcıyı iade etmek mi istiyorsunuz? Yoksa bu çevreden kullanıcılar hakkında bazı istatistikler mi yapıyorsunuz? Veya ... –
Cevabınız için teşekkürler, tek bir şehir içinde arama arıyorum, ama sahip olduğum sorun SQL server bitmap dizinine sahip değil, ben son SQL yeni özellikler görmedim emin değilim, umarım orada. –