Ben sürekli insanlar endeksleri yavaşlatmak demek bkz update
, delete
ve insert
. Bu, mutlakmış gibi battaniye bir ifade olarak kullanılır.
Veritabanımı performansı artırmak için ayarlarken, bu kuralın benim için mantıklı bir şekilde çeliştiği görünen bu duruma rastlıyorum ve başka hiçbir yerde kimsenin söyleyemeyeceği veya açıklayabileceği bir yer bulamıyorum.
SQL Server'da ve diğer birçok DBMS'ye inanıyorum / varsayalım, dizinleriniz belirttiğiniz belirli sütunlara göre oluşturulur. Ekler ve silmeler her zaman tüm satırı etkiler, bu nedenle dizini etkilememelerinin bir yolu yoktur, ancak güncellemeler biraz daha benzersiz görünür, yalnızca belirli sütunları etkileyebilir.
Herhangi bir dizinde bulunmayan sütunlarım varsa ve bunları güncelleştirirsem, yalnızca o tablodaki diğer sütunlarda bir dizin oluşturduğum için yavaşlarlar mı?
Örnek olarak, benim masamda User
bir veya iki dizin var, bir Kimlik / Otomatik Artış sütunu olan birincil anahtar ve muhtemelen bazı yabancı anahtar sütununda başka bir dizin var.
Bir sütunu doğrudan üzerinde dizin olmadan, telefon numaralarını veya adreslerini söyleyin gibi güncelleştirirsem, her iki durumda da diğer sütunlarda bu tabloda dizinler bulunduğum için bu güncelleştirme yavaşlatılıyor mu? Güncelleştirdiğim sütunlar dizinlerde değil, bu nedenle mantıksal olarak dizinler güncellenmemeli, değil mi? Eğer bir şey varsa, ben WHERE yan tümcesinde dizinleri kullanırsanız hızlanır düşünüyorum.
so there is no way they will not affect the index
... süzülmüş endeksler için hariç