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:
FK ilişki kısıtlaması yardımcı olur yanında, başka bir yararı var mı? Sorgu performansını artırmak mı?
Tüm FK sütunlar üzerinde dizin oluşturmak gerekir (Ürünleri çok seviliyor.Kategorino) tüm tabloları?
CEVAP
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.
Java'da final anahtar kelime kullanımı...
INSERT deyimi, YABANCI ANAHTAR kısıtla...
EKLEMEK saniyede SQLite performansını ...
(Nasıl 3.6.21) mevcut bir sqlite tablo...
Yabancı anahtar, otomatik olarak bir d...