Dizin beni binlerce kez taciz etti ve dizini ilk aşk olarak bekliyorum
Birisi indeksin ne olduğunu sorduğunda, herkes "kitap kataloğu" nu bir benzetme olarak kullanmayı sever. İndeksi olmayan bir veritabanı, katalogsuz bir kitap gibidir. Bölüm 3'ün yedinci alt bölümünü bulmak istiyorsanız, her sayfayı aramanız gerekir. En korkunç olanı kitabı teslim etmeden önce teslim etmeniz gerektiğidir, aksine indeksli bir veri tabanı kataloğu olan bir kitaptır ve onu doğrudan katalogdan bulabilirsiniz.
Bir kitap kataloğu koyarsanız ve insanlar aramaya gelirse, veritabanını nasıl "ararsınız"? "Katalog" nasıl yerleştirilir?
Veritabanı kurulduktan sonra, kurulum programı otomatik olarak, diğer sistem veritabanlarını, kullanıcı veritabanlarını ve veritabanı sistem bilgilerini depolamak ve yönetmek için kullanılan ana veritabanı ana veritabanı olan ana, model, tempdb gibi birkaç özel "sistem veritabanı" oluşturacaktır. .
Adında bir usta var sysindexes Sistem tabloları, özellikle dizinleri yönetir. Veritabanı sorgulama veri tablosu işlemleri için kullanılmalıdır, şüphesiz bu makalenin baş kahramanlarından biridir.
Not: Bir tablonun dizin özelliklerini görüntülemek için, sorgu çözümleyicide aşağıdaki komutu kullanabilirsiniz: id = nesne_kimliği ('tablename') olan sysindexes'ten * öğesini seçin. Tablename parametresi, indekslenmiş tablonun adıdır.
Bu nedenle, şimdi bir tanıma sahibiz: indeks özel olarak bir tabloya yerleştirilir ve konum diğer veri tablolarından farklıdır.
İlk önce iki kavramı tanıtın: kümelenmiş dizin, kümelenmemiş dizin
İkisinin özelliklerine göre, avantajlarını ve dezavantajlarını özetlemek kolaydır, yani kümelenmiş indeksin aranması daha hızlıdır ve dezavantajı, tabloyu değiştirmenin daha yavaş olmasıdır, çünkü veri sırasının tutarlı tutulması gerekir ve kümelenmemiş indeks tam tersidir. Uygulanabilir senaryoları aşağıdaki gibidir:
Şimdi denge ağacını tanıtalım
"İçindekiler tablosu" na dönersek, Bölüm 3, Bölüm 7'nin 236. sayfada olduğunu bildiğimizde, onu gelişigüzel çevirebilirsiniz, ancak daha bilimsel bir yöntem: önce kitabın yaklaşık yarısına dönün, sonra ikinci Kitabın sonraki yarısını bulun ve bu şekilde, doğru sayfa sayısını bulana kadar, algoritmaya aşina olan öğrenciler bunun yaygın bir "ikilem" olduğunu göreceklerdir, Microsoft'un resmi eğitim MOC'sinde bir tane daha vardır. Açıklama: B-ağacı (Denge Ağacı), yani dengeli ağaç olarak adlandırılır.
Dizinin uygulanması, B + ağacının veri yapısını kullanır B + ağacındaki gerçek veriler yaprak düğümlere yerleştirilir ve yalnızca dizin verileri yaprak olmayan düğümlerde saklanarak mümkün olduğunca çok veri öğesi olmasını sağlar.
(B ve B + ağacı arasındaki fark, B + ağacının yaprak olmayan düğümlerinin yalnızca gezinme bilgilerini içermesi ve gerçek değerleri içermemesidir. Tüm yaprak düğümler ve bağlı düğümler, aralıklı arama ve geçiş için uygun olan bağlantılı bir liste ile bağlanır.)
Bu iki kavramın bilgisine dayanarak, veritabanının nasıl "arandığından" bahsedelim.
Geç Kümelenmemiş dizin Giriş Durum Detaylandırmak için.
Ad parametresinde kümelenmemiş bir dizinin kurulduğunu varsayarsak, aşağıdaki ifade yürütüldüğünde sorgu işlemi şu şekildedir:
* Üyeden Seçin Burada isim = 'Zhang San'Endeksin bazı içsel eksiklikleri vardır:
Elbette, indekslemenin avantajları da açıktır: büyük veri durumunda, indeks makul bir şekilde oluşturulmuşsa, sorguları yürütmek, sonuçları sıralamak ve gruplandırmak için veritabanının operasyonel verimliliğini büyük ölçüde artıracaktır.
Uygulama, uygun olmayan indekslemenin sadece yararsız olmadığını, aynı zamanda sistem performansını da azaltacağını göstermektedir. Çünkü çok sayıda dizin, ekleme, değiştirme ve silme işlemlerinde dizinsiz işlemlere göre daha fazla sistem zamanı harcar. Örneğin, aşağıdaki alanlarda dizin oluşturmak uygun olmayabilir: 1. Nadiren veya hiç alıntılanmayan alanlar 2. Erkek veya dişi gibi mantıksal alanlar (evet veya hayır).
Özetle, sorgu verimliliğini artırmak, belirli sistem kaynaklarını tüketme pahasına gelir.İndeksler körü körüne kurulamaz ve genel planlama yapılmalıdır. "Sorguyu hızlandır" ve "değiştirme hızını azalt" arasında bir denge olmalıdır Kazançlar ve kayıplar olacak ve kayıp, kazanca yol açacaktır. Bu, bir DBA'nın mükemmel olup olmadığını test etmek için çok önemli bir göstergedir.