SORU
3 ŞUBAT 2009, Salı


Yabancı Anahtar sorgu performansını artırmak mı?

2 tablo, Ürünleri ve ProductCategories yoktur sanırım. Her iki tablo Categoryıd ilişki var. Ve bu sorguyu.

select p.ProductId, p.Name, c.CategoryId, c.Name AS Category
from Products p inner join ProductCategories c on p.CategoryId = c.CategoryId
where c.CategoryId = 1;

Yürütme planı oluşturmak, masa ProductCategories beklenti olarak küme dizin arama yapar. Ama masa Ürünleri için, beni şüphe yapmak küme dizin tarama gerçekleştirir. Neden FK sorgu performansını artırmak yardımcı olmuyor?

Ürünler üzerinde dizin oluşturmak için var.Kategorino. Yürütme planı tekrar oluşturduğumda, her iki tablo dizin arama gerçekleştirmek. Alt ve tahmini maliyeti çok azalır.

Benim sorular şunlardır:

  1. FK ilişki kısıtlaması yardımcı olur yanında, başka bir yararı var mı? Sorgu performansını artırmak mı?

  2. Tüm FK sütunlar üzerinde dizin oluşturmak gerekir (Ürünleri çok seviliyor.Kategorino) tüm tabloları?

CEVAP
3 ŞUBAT 2009, Salı


Yabancı Anahtarlar tutarlılığına bir aracı değil, bir performans aracı. En azından SQL Server, bir FK oluşturulması ilişkili bir dizin oluşturmaz, ve FK alanları dizinleri kez bak artırmak için oluşturmanız gerekir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jat4011

    jat4011

    16 EKİM 2010
  • MugenPowerBatteries

    MugenPowerBa

    8 EKİM 2010
  • Triune Films

    Triune Films

    9 ŞUBAT 2006