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

  • huyked

    huyked

    28 Mart 2008
  • Jordie Jordan

    Jordie Jorda

    27 Ocak 2008
  • videoisunrelated

    videoisunrel

    5 Mart 2009