Endeksler sorgu performansını nasıl etkiler?


12

Açıkçası birkaç farklı endeks tutmanın ekleme ve silme performansı üzerinde olumsuz etkisi vardır. Sorgu performansına ne dersiniz: Bir tabloda çok fazla endeks tutmak hiç de mantıklı mı? Sorgu performansı herhangi bir durumda bir dizin eklenmişse (elbette dizini kullanan sorgular için) iyileşecek mi, yoksa sorgunun elde edilmesi için tüm dizinlere başvurulması gerektiğinden, sorgu performansının çok fazla endekse düşmesi bile mümkün müdür? sonuç?

Bir tabloda farklı endeksler olması durumunda: hepsi düşünülecek mi yoksa sadece optimize edici açısından en iyisi mi? Oracle çok boyutlu indeksler uyguluyor mu?


2
neden bunu test etmiyorsunuz ve sonuçlarınızla ilgili rapor vermiyorsunuz? :)
Neil McGuigan

Yarın yapacağım :)
paweloque

2
Dizinler mutlaka silmeleri yavaşlatmaz, ayrıca hızlandırabilirler (tıpkı güncellemeler bir dizinden yararlanabilir gibi)
a_horse_with_no_name

@el şef tekerleği yeniden icat etmenin anlamı nedir? bu nedenle evet, sorgu performans efekti söz konusu olsa da, eklemelerin / silme işlemlerinin etkileneceğini biliyoruz. Güncellemeler nasıl? olumsuz etkilenecekler mi?
Sangram

Yanıtlar:


15

Dikkate alınacak daha fazla endeks olduğunda planı oluşturmak biraz daha uzun sürecektir, ancak farkın ölçülebilir derecede önemli olacağından şüpheliyim. Bir dizin bırakarak nedenleri sorgu performansı listelemiyor. Öte yandan, bir sorguyu daha verimli hale getirmek için kullanılacağını bilmedikçe genel olarak dizinler oluşturmamalısınız.

Gönderen Oracle Kavramlar Guide , burada bir dizin oluşturmak için kriterdir.

Genel olarak, aşağıdaki durumlardan herhangi birinde bir sütun üzerinde bir dizin oluşturmayı düşünün:

  • Dizinlenmiş sütunlar sık ​​sık sorgulanır ve tablodaki toplam satır sayısının küçük bir yüzdesini döndürür.

  • Dizinlenmiş sütun veya sütunlarda başvuru bütünlüğü kısıtlaması vardır. Dizin, üst tablo birincil anahtarını güncelleştirirseniz, üst tabloya birleştirirseniz veya üst tablodan silerseniz, aksi takdirde gereken tam tablo kilidini önlemenin bir yoludur.

  • Benzersiz bir anahtar kısıtlaması tabloya yerleştirilecek ve dizini ve tüm dizin seçeneklerini manuel olarak belirlemek isteyeceksiniz.

Tüm indeksler, sorgudaki tablolardaki tüm indekslerin, kullanılıp kullanılamayacaklarını belirlemek için inceleneceği anlamında dikkate alınacaktır. Yararlanabilecekleri belirlemek için daha fazla incelenebilir.


7

İstatistikleriniz güncel olduğu sürece , maliyet temelli optimize edici hangi dizinlerin kullanılacağı konusunda mantıklı kararlar almalıdır. Değilse, ipuçlarını kullanma zamanı gelmiştir . Sorguyu karşılamak için gerekli olmayan bir sütundaki hiçbir dizine asla başvurmaz.


0

Ben bunu buldum Seçme Dizin Strateji ait Uygulama Geliştirici Kılavuzu'nda . Bu sayfa 'bir dizin stratejisi seçme' ile ilgilidir:

Her Tablo için Dizin Sayısını Sınırlama

Daha fazla dizin, tablo değiştikçe daha fazla ek yük oluşur. Satırlar eklendiğinde veya silindiğinde, tablodaki tüm dizinlerin güncellenmesi gerekir. Bir sütun güncellendiğinde, sütundaki tüm dizinlerin güncellenmesi gerekir.

Sorgulara ilişkin dizinlerin performans avantajını, güncelleştirmelerin performans ek yükü ile karşılaştırmanız gerekir. Örneğin, bir tablo birincil olarak salt okunursa, daha fazla dizin kullanabilirsiniz; ancak, bir tablo yoğun bir şekilde güncellenirse, daha az dizin kullanabilirsiniz.


2
Şu sorudan: "Açıkçası birkaç farklı indeks tutmak ekleme ve silme performansı üzerinde olumsuz bir etkisi vardır. Sorgu performansı hakkında ne dersiniz"
Jack diyor denemek topanswers.xyz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.