Aracılığıyla paylaş


Access sorguları That Correlated datetime sütun en iyi duruma getirme

küme seçenek DATE_CORRELATION_OPTIMIZATION veritabanının bir eş birleştirmek arasında gerçekleştiren bir sorgu performansını artırır iki whose tabloları TARİH or DateTime sütunları correlated ve bir tarih sınırlaması sorgu doğrulamasını belirtmek.

Whose tabloları tarih or tarih zaman sütun değerlerini correlated ve tarih _CORRELATION_OPTIMIZATION etkinleştirmesini yararlanabilir, genellikle bir-çok ilişkinin bir parçası olan ve öncelikle karar destek, raporlama veya veri amacıyla depolama için kullanılır.

Örneğin, AdventureWorks Örnek veritabanı, OrderDate sütunPurchasing.PurchaseOrderHeader tablo ve DueDate sütunPurchasing.PurchaseOrderDetail tablo correlated.Tarih değerleri PurchaseOrderDetail.DueDate eğilimlidir kısa bir süre içinde olanlar , sonra da izlemek içinPurchaseOrderHeader.OrderDate.

DATE_CORRELATION_OPTIMIZATION veritabanı seçenek ayarlandığında, ON SQL Server Korelasyon istatistikleri'arasındaki herhangi iki tablonuz veritabanında saklar. TARİH or DateTime sütunları ve öğeler tek sütunluk bir yabancı anahtar kısıtlaması ile bağlantılı.Varsayılan olarak, bu seçeneği KAPALı olarak küme.

SQL Server Sonuç değiştirmeden ek kısıtlamalar sorguya eklenebilir anlaması için bu korelasyon istatistikleri ile birlikte sorgu doğrulamasını belirtilen tarih sınırlaması kullanır küme.Bir sorgu planı belirlediğinde, sorgu iyileştiricisi inferred bu koşulları kullanır.Ek kısıtlamalar sağlar, çünkü daha hızlı bir sorgu planı, neden olabilir SQL Server Sorgu işlerken daha az veri okunamıyor. Her iki tabloda bunlara tanımlanan dizinleri kümelenmiş performansı da artırıldı ve bunların TARİH or DateTime sütunlar için hangi korelasyon istatistikleri sürdürülür ilk veya yalnızca kümelenmiş dizin anahtar.

Örneğin, hazırlamak varsayalım AdventureWorks veritabanı için bağıntı bilgileri korumak için Purchasing.PurchaseOrderDetail and Purchasing.PurchaseOrderHeader aşağıdaki Transact-SQL komut dosyası çalıştırarak:

USE AdventureWorks;
GO

-- Create a unique index to take the place of the existing 
-- primary key constraint
CREATE UNIQUE NONCLUSTERED INDEX
IX_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID 
ON Purchasing.PurchaseOrderDetail(PurchaseOrderID,PurchaseOrderDetailID);
GO
-- Drop existing clustered index by dropping constraint
ALTER TABLE Purchasing.PurchaseOrderDetail
DROP CONSTRAINT PK_PurchaseOrderDetail_PurchaseOrderID_PurchaseOrderDetailID;
GO
-- Create new clustered index on DueDate
CREATE CLUSTERED INDEX IX_PurchaseOrderDetail_DueDate
ON Purchasing.PurchaseOrderDetail(DueDate);
GO
--Enable DATE_CORRELATION_OPTIMIZATION database option
ALTER DATABASE AdventureWorks
   SET DATE_CORRELATION_OPTIMIZATION ON;
GO

Şimdi, aşağıdaki sorguyu çalıştırmak varsayalım:

SELECT *
FROM Purchasing.PurchaseOrderHeader AS h,
    Purchasing.PurchaseOrderDetail AS d
WHERE h.PurchaseOrderID = d.PurchaseOrderID
AND h.OrderDate BETWEEN '20020101' AND '20020201';

Değerleri PurchaseOrderDetail.DueDate Bu sorgu tarafından döndürülen genellikle gün ' 14 gün ( değerleri gibi belirli bir dönem içindeki kalanPurchaseOrderHeader.OrderDate.Bu nedenle, SQL Server Önceki sorgu daha iyi buna benzer bir sorgulama kullanarak ifade edilebilir olduğunu anlaması doğrulayabilirsiniz:

SELECT *
FROM Purchasing.PurchaseOrderHeader AS h,
    Purchasing.PurchaseOrderDetail AS d
WHERE h.PurchaseOrderID = d.PurchaseOrderID
AND h.OrderDate BETWEEN '1/1/02' AND '2/1/02'
AND d.DueDate BETWEEN CAST ('20020101' AS datetime) + 14 AND CAST ('20020201' AS datetime) + 14;

Ek koşul, ikinci AND yan tümcesinde belirtilen tam biçimini özgün sorgu ve veritabanınızdaki verileri değerlerini bağlıdır.Örtülü bir koşul ekledikten sonra iyileştirici yürütme planı oluşturmak için kullanır.Bu örnekte, yoktur kümelenmiş dizin PurchaseOrderDetail.DueDate karşılayan satırları olarak almak için bu dizin kullanılacak şekilded.DueDate BETWEEN CAST ('20020101' AS datetime) + 14 AND CAST ('20020201' AS datetime) + 14. Birkaç yıl satılmıştır verilerde varsa Purchasing.PurchaseOrderDetail, bu sorgu önemli bir özgün sorguya göre yürütme zamanı (several-fold) azalmasına neden olabilir.

DATE_CORRELATION_OPTIMIZATION, etkinleştirme nedeniyle değişkenden bir durum ile bir sorgu planı'nı çalıştırmadan önce SQL Server Sorgu veritabanının geçerli içeriğini temel alarak doğru yanıt üretecektir doğrular.

DATE_CORRELATION_OPTIMIZATION veritabanı seçeneğini kullanarak gereksinimleri

DATE_CORRELATION_OPTIMIZATION veritabanı seçeneği etkinleştirmesini üzere iki tablo için aşağıdaki koşullar karşılanmalıdır:

  • Veritabanı küme seçenekleri, aşağıdaki şekilde ayarlanmalıdır.ANSI_NULLS ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL ve tırnak içine ALıNMıŞ TANıMLAYıCı ON küme gerekir.KAPALı küme NUMERIC_ROUNDABORT gerekir.

  • Tablolar arasında tek sütunlu bir yabancı anahtar ilişkisi olmalıdır.

  • Tabloların her ikisi de olması gerekir DateTime tanımlanan sütunlarını NOT NULL.

  • En az bir DateTime sütunlar, kümelenmiş dizin, anahtar sütun olmalıdır (dizin anahtarı bileşik ise, onu ilk anahtar olmalıdır) veya bölümlenmiş tablo ise, bölümleme sütunu olmalıdır.

  • Her iki tablonun aynı kullanıcı tarafından sahibi olmalıdır.

Aşağıdaki noktaları göz önünde bulundurun olduğunda, küme DATE_CORRELATION_OPTIMIZATION veritabanı seçeneği açık:

  • SQL Server Korelasyon Formdaki istatistik bilgileri tutar.Bu istatistikler, tarafından güncelleştirildi SQL Server ilgili tablolarda INSERT, UPDATE ve DELETE işlemleri sırasında bu işlemlerinin performansını etkileyebilir. Güncelleştirme yoğun veritabanı ortamlarda DATE_CORRELATION_OPTIMIZATION etkinleştirmemelisiniz.

  • Herhangi biri, DateTime sütun, istatistik sürdürülür korelasyon ilk veya yalnızca bir kümelenmiş dizin anahtar olmadığı, kümelenmiş bir dizin üzerinde oluşturma düşünün.Yol genellikle bunu daha iyi başarım için bağıntı istatistikleri tarafından kapsanan sorgu türleri üzerinde gösterir.Kümelenmiş bir dizin birincil anahtar sütunları zaten varsa, farklı bir sütun kümesi, kümelenmiş dizin ve birincil anahtar kullanacak şeklide bir tabloyu değiştirebilirsiniz.

  • DATE_CORRELATION_OPTIMIZATION etkinleştirmek, aşağıdaki durumlarda herhangi bir yarar sağlamaz:

    • Korelasyon istatistikleri korumak için daha önce belirtilen ölçütlere uyan bir tablonun hiçbir çiftleri vardır.

    • Korelasyon istatistikleri bakımı için ölçütlere uyan tabloları çiftlerini vardır, ancak bu tabloları birleştirmek sorguları, yüklemler bir tarih sınırlaması belirtmeyin.

DATE_CORRELATION_OPTIMIZATION veritabanı seçeneğini ayarlamak için

Korelasyon istatistikleri ile çalışma

Tüm uygun çiftlerini eşleşen tabloları için korelasyon istatistikleri otomatik olarak dizin oluşturulmuş görünümler formunda oluşturulur, size küme DATE_CORRELATION_OPTIMIZATION veritabanı seçeneği açık.Zaman SQL Server sorgu iyileştiricisi çiftleri arasındaki korelasyon yararlanmak olduğu DateTime sütunlar, bu korelasyon istatistikleri, sorgu planlamasını kullanır.Korelasyon istatistikleri, INSERT, UPDATE mantığı da dahil ve ifadeler burada etkilenen DELETE.Korelasyon istatistikleri adını aşağıdaki biçimde alın:

_MPStats_Sys_<constraint_object_id>_<GUID>_<FK_constraint_name>

<FK_constraint_name>is the name of the foreign key constraint in the sys.objects catalog view on which the datetime match is based.<constraint_object_id> is an 8-digit hexadecimal representation of the objectid of the foreign key constraint.

Not

SQL Server kısaltır FK_constraint_bölümü adı tanımlayıcı uzunluğu sınırı aşabilir korelasyon istatistiklerinin adı.

küme gösterim planı XML kullanarak bir sorgu yürütülürken, korelasyon istatistikler ' Türetilen herhangi bir süzgeç düğüm, aşağıdaki öznitelik içerir:

DateCorrelationOptimization="true"

Örneğin, bir <Doðrulama> düğüm tarafından korelasyon istatistikleri'ni etkilediği şöyle görünür:

<Predicate DateCorrelationOptimization="true">

Bu öznitelik, korelasyon istatistikleri tamamen veya bir yüklemi, korelasyon istatistikleri ile başka bir yüklemi etkilediği birleştirerek oluşturulan herhangi bir süzgeç düğümle bulunur.

Generally, when the DATE_CORRELATION_OPTIMIZATION database option is set to ON, SQL Server creates correlation statistics for all eligible pairs of datetime columns.SQL Server creates additional correlation statistics when you perform the following:

  • CREATE tablo veya gereksinimlerini karşılayan ALTER tablo, yabancı anahtar kısıtlamalarını oluşturma DateTime korelasyon en iyi duruma getirme.

  • kümelenmiş dizin oluşturmak bir DateTime sütun bu sütun ise ( ile eşleşen bir korelasyon için uygunDateTime sütunu başka bir tablo.

    Not

    ONLINE kullanarak kümelenmiş bir dizin oluşturulduğunda, yok bir korelasyon istatistikleri oluşturulan = seçenek.Dizin Oluþturma edinmiştir sonra ancak dizin oluşturmayı bağımlı korelasyon istatistikleri başka bir işlem, yabancı anahtar kısıtlamasını oluşturulması gibi bir olayda sonucu olarak yerleşik.

  • Korelasyon ile eşleşen için uygun hale getirmek için sütun null atanabilirlik veya veri türünü değiştirmek DateTime sütunu başka bir tablo.

Doğrudan uygulamalarda, korelasyon istatistikleri çünkü başvuruda. SQL Server herhangi bir anda bırakılacağı karar verebilirsiniz. Bunları korumak için maliyet performansını etkilediğini saptarsanız, tek bir korelasyon istatistikleri bırak karar verebilirsiniz.Korelasyon istatistikleri DROP izinlerini varsayılan üyeleri için küme sysadmin sabit sunucu rolüdb_owner and db_ddladmin sabit veritabanı rolü ve çiftinin korelasyon istatistikleri tanımlanan tabloların sahibi.Bu izinler, transfer edilebilir değil.

Korelasyon istatistikleri aşağıdaki durumlarda bırakılır:

  • DATE_CORRELATION_OPTIMIZATION veritabanı seçeneği KAPALı, oluşturulan herhangi bir korelasyon istatistikleri ayarlandığında SQL Server bırakılır.

  • Yararlı beklenen değil ya da korumak için aşırı depolama gerektiren korelasyon istatistikleri bırakılır.

  • Yabancı anahtar kısıtlaması, DROP tablo veya ALTER tablo'ı kullanarak düşürdüğünüzde, bu sınırlama ile ilişkili herhangi bir korelasyon istatistikleri bırakılır.

  • Bir işlem, aynı kullanıcı tarafından artık olduğu için bağıntı eşleşen üyesi olan tabloları neden olduğunda, ilgili istatistikleri korelasyon bırakılır.

  • ALTER TABLE…SWITCH deyim yürütmek ve kaynak tablo veya hedef tablo tanımlanmış korelasyon istatistikleri'ni varsa, bu korelasyon istatistikleri bırakılır.

  • When you create a clustered index on a datetime column and correlation statistics are built on a different datetime column of the same table, the correlation statistics are dropped.SQL Server may create new correlation statistics based on the newly created clustered index, if eligible.

  • kümelenmiş dizin, önde gelen dizin anahtar hangi koşullarda bırak bir DateTime sütun, istatistik, başka bir bırakılan korelasyon fırsatla ilişkili DateTime sütunu aynı var tablo üzerinde yeni hangi korelasyon istatistikleri oluşturulabilir.

  • Bu istatistikler, veri türü veya korelasyon istatistiklere katılan sütun null atanabilirlik değiştirmek için ALTER tablo yürüttüğünüzde, bırakılır.

Korelasyon istatistikleri oluşturulmuş veya bunları oluşturulacak veya iptal neden aynı işlemin bir parçası bıraktı.Bu, çevrimiçi veya zaman uyumsuz hareketidir.

Kullandığınızda Veritabanı Altyapısı Ayarlama Danışmanı bir basit, bir sunucu tabanlı üretim sunucusuna doğrudan ayarlamak için senaryo ayarlama, korelasyon istatistiklerinin faydaları ve maliyetleri varsayar.Ancak, kullandığınızda Veritabanı Altyapısı Ayarlama Danışmanı sınama ve üretim sunucusu senaryosunda, bu korelasyon istatistikleri iç sistem nesnelerinin olmasını dikkate almaz.Bu nedenle, korelasyon istatistikleri, sorgu en iyi duruma getirme tarafından kullanılmayan Veritabanı Altyapısı Ayarlama Danışmanı endeksini çözümlemesi ayarlama sırasında.Bir sınama ve üretim senaryosunda, maliyetler, ancak bunların avantajları bildiğinden veritabanı altyapısı ayarlama Advisor korelasyon istatistiklerini tutan dizin oluşturulmuş görünümler hakkında hale herhangi bir öneri yok saymak isteyebilirsiniz.Her iki durumda da, Veritabanı Altyapısı Ayarlama Danışmanı kümelenmiş dizinler gibi belirli dizinlerinin seçim üzerinde tavsiye değil DateTime DATE_CORRELATION_OPTIMIZATION etkinleştirildiğinde yararlı olabilir sütunlar.

Meta veriler korelasyon istatistikleri hakkında sorgulama

To view the setting of the DATE_CORRELATION_OPTIMIZATION database option, select the is_date_correlation_on column of the sys.databasescatalog view.

Bir görünüm korelasyon istatistik göre belirlemek için , seçin is_date_correlation_view sütunsys.Views kataloğunu görüntüleyin.