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

  • Android Police

    Android Poli

    21 NİSAN 2010
  • guillaume2111's channel

    guillaume211

    19 Kasım 2006
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009