Genel olarak, hayır. Dizine eklendiğinde, iki satırlı bir alan sorguları hızlandırmaz, çünkü ortalama satırların yarısına bakmanız gerekir. Dizin girdilerinizin seçici olmasını istersiniz - endekste belirli bir giriş olası değerlerin sadece küçük bir yüzdesini temsil etmelidir (örneğin% 10'dan daha az, tercihen yüzde kesirlerine). Daha sonra indeksi kullanmak, tablodaki verilerin çoğunu yok sayar, bu da size bir performans avantajı sağlar.
Bazı DBMS, bitmap dizinlerini destekler. Yardım edebilirler, ancak hala seçicilik problemine giriyorsunuz.
güncellenen soru değeri 1 ile değerlerin sayısı (yüzde birden az) küçük olacağını söylüyor; Bir endeks size şimdi bir fayda sağlayacak mı?
cevabı şudur: değeri daha sonra 1, evet, sütun üzerinde bir indeks bir fayda sağlayabilir olduğunu belirtmek bu sorgular için
, iyileştirici aslında indeksi kullanan şartıyla . Dizinin, değerin 1 olduğu sorgular kullanılarak kullanılmasının lehine eğildiğini fark etmesini sağlamak için DBMS'yi düzeltmeniz gerekebilir; Bu, DBMS'ye özgü olma eğilimindedir, ancak istatistiklerin çeşitli kılavuzlarda güncelleştirilmesi, muhtemelen SQL sorgularında ipuçları kullanılarak oyunun adıdır. Tabii ki, optimizatör endeksi asla kullanmazsa, o zaman hala fayda sağlamaz - ve optimizer diğer indekslerin bir şekilde daha fazla yardımcı olmasına karar verebilir.
Değerin 0 olduğu sorgularda dizin kullanılmamalıdır. Ancak, olasılıklar, DBMS'nin 0 değerlerini de korumaya devam edecektir - asla kullanmamasına rağmen. Komut verilebilecek alışılmadık bir DBMS olurdu, bu sadece çok faydalı olsa da 'sıfırdan başka değerler için bu sütunu endeksle'.
Yani - bu bağlıdır. Sorgulara bağlı ve optimizatöre bağlı.
Ayrıca, bazı diğer geleneksel olarak kullanılan sütunlarda ve sonra bit alanında, bir bileşik dizinin bazı yararlar sağlayabileceğini de unutmayın. Yani, hemen her zaman bir tarih aralığından seçerseniz, tarih ve bit alanı sütunlarında (muhtemelen bu sırada) bir bileşik dizin size iyi bir dizin sağlamalıdır.