Aracılığıyla paylaş


SQL deyim işleme

En temel olan tek bir SQL deyim işlem bu şekilde SQL Server SQL deyim yürütür. Yalnızca yerel temel tabloları (görünümler veya uzaktan tabloları) başvuran tek bir deyim işlemek için gereken adımları, temel işlemi gösterilmektedir.

SELECT deyimleri en iyi duruma getirme

Bir deyim nonprocedural, veritabanı sunucusu, istenen veri almak için kullanacağı tam adımlar belirtin.Bunun anlamı, veritabanı sunucusu deyim, istenen veri ayıklamak için en etkin yolu belirlemek için çözümleme gerekir.Bu, SELECT deyiminin en iyi duruma getirme olarak adlandırılır.Bunu yapan bileşen sorgu iyileştiricisi denir.En iyi duruma getiricisi için giriş, sorgu, veritabanı şeması (Tablo ve dizin tanımları) ve veritabanı istatistiklerini oluşur.Iyileştirici çıkışını olan bir Sorgu yürütme planıBazen başvuru sorgu planı or just a planı.A query plan içeriğini bu konuda daha ayrıntılı olarak açıklanmıştır.

Giriş ve çıkışlarını sorgu iyileştiricisi tek bir SELECT deyiminin en iyi duruma getirilmesi sırasında aşağıdaki çizimde gösterilmiştir:

Query optimization of a SELECT statement

Bir deyim, yalnızca aşağıdaki tanımlar:

  • Sonuç biçimini küme.Bu çoğunlukla seçme listesinde belirtildi.Ancak, ORDER BY ve GROUP BY gibi diğer yan tümceleri de nihai sonucu biçimini etkiler küme.

  • Kaynak verileri içeren tablolar.KIMDEN belirtilen yan tümce.

  • Nasıl tablolar, deyim amaçları için mantıksal olarak ilişkilidir.Bu birleştirmek belirtimleri, WHERE yan tümcesinde veya FROM izleyen bir ON yan tümcesinde görünür tanımlanır.

  • deyim için nitelemek için Kaynak tablolardaki satırları yinelenip yinelenmeyeceği koşulları.Bunları NEREDE belirtilir ve HAVING yan tümcesi.

Bir sorgu yürütme planı tanımı aşağıdaki gibidir:

  • Kaynak tablo erişilen sırası.

    Normal olarak, birçok serilerini sonucu oluşturmak için temel tablolar veritabanı sunucusuna erişebilirler vardır küme.deyim üç tablo başvuruyorsa, örneğin, veritabanı sunucusunun ilk erişebilir TableA verileri kullanın.TableA eşleşen satırları ayıklamak içinTableBve verileri kullanınTableB veri ayıklamak içinTableC.Tablolar veritabanı sunucusuna erişebileceği başka sıraları şunlardır:

    TableC, TableB, TableA, or

    TableB, TableA, TableC, or

    TableB, TableC, TableA, or

    TableC, TableA, TableB

  • Verileri her ayıklamak için kullanılan yöntemleri tablo.

    Genellikle, her tablodaki verilere erişim için farklı yöntemler de vardır.Veritabanı sunucusu, yalnızca birkaç satır belirli bir anahtar değerleri ile gerekli olan, bir dizin kullanabilirsiniz.Tablodaki tüm satırların gerekliyse, veritabanı sunucusu dizinleri yoksay ve bir tablo taraması gerçekleştirin.Bir tablo taraması yerine bir dizin taramayı gerçekleştiren bir tablodaki tüm satırların gereklidir, ancak bir ORDER BY anahtar sütunları olan bir dizin olduğundan, sonuç kümesinin ayrı bir sıralama kaydetmek.Tablo çok küçükse, tablo taramaları tablosuna neredeyse tümüne erişim için en verimli yöntem olabilir.

Olası pek çok olası planları bir yürütme planı seçme işlemini en iyi duruma getirme (Bu bağlantı adlandırılır.sorgu iyileştiricisi bir SQL veritabanı sisteminin en önemli bileşenlerden biri dir.Bazı ek yükü bir plan seçmek için sorguyu sorgu iyileştiricisi tarafından kullanılır, ancak sorgu iyileştiricisi verimli yürütme planı seçer bu yükünü genellikle several-fold kaydedilir.Örneğin, iki inşaat şirketleri için bir ev aynı blueprints verilebilir.Şirket, proje planlama sürüyor birkaç gün başına nasıl evin oluşturacaksınız planlamak için bir şirket geçirdiği ve diğer şirket oluşturma olmadan planlama başlar, büyük olasılıkla önce tamamlanır.

The SQL Server sorgu iyileştiricisi is a cost-based optimizer. Ilişkili bir maliyet cinsinden tutar kullanılan bilgisayar kaynaklarının her olası yürütme planı var.sorgu iyileştiricisi olası planları çözümlemek ve en düşük tahmini maliyetini sahip seçin.Bazı karmaşık bir SELECT deyimi, olası yürütme planları binlerce vardır.Bu gibi durumlarda, sorgu iyileştiricisi tüm olası bileşimlerini çözümlemek değil.Bunun yerine, olabildiğince düşük olası maliyet yakın bir maliyete sahip yürütme planı'nı bulmak için karmaşık algoritmalar kullanır.

The SQL Server sorgu iyileştiricisi does not choose only the execution plan with the lowest kaynak cost; it chooses the plan that returns sonuçlar to the user with a reasonable cost in resources and that returns the sonuçlar the fastest. Örneğin, paralel sorguda genellikle işlem seri olarak işleniyor çok daha fazla kaynak kullanır, ancak sorgu daha hızlı tamamlanır.SQL Server iyileştirici, sunucu üzerindeki yükü olumsuz etkilenmez, sonuçlar döndürmek için paralel yürütme planı kullanacaktır.

Bu tablo veya dizin bilgileri ayıklamak için farklı yöntemler kaynak maliyetlerini tahmin eder, sorgu iyileştiricisi dağıtım istatistik dayanır.Dağılım istatistiklerini, sütun ve dizin için tutulur.Bunlar, belirli bir dizin veya sütundaki değerlerin selectivity gösterir.Örneğin, otomobiller gösteren bir tablo, aynı üreticinin birçok otomobilleri vardır, ancak her araba benzersiz araç kimlik numarası (VIN) vardır.VIN üzerinde dizin üreticiye göre daha seçici dizinidir.Dizin istatistik geçerli değilse, sorgu iyileştiricisi tabloyu geçerli durumu için en iyi seçim yapabilir değil.Dizin istatistikleri güncel tutmak hakkında daha fazla bilgi için bkz: Sorgu performans geliştirme için istatistikleri'ni kullanma.

Veritabanı sunucusu veritabanında bir programcı veya veritabanı yöneticisine girdiden gerekmeksizin değişen koşullarına dinamik olarak ayarlanacak sağladığından, sorgu iyileştiricisi önemlidir.Bu, programcıların sorgunun sonucunu açıklayan üzerinde odaklanmanıza olanak tanır.sorgu iyileştiricisi için veritabanının durumunu etkin yürütme planı oluşturacaksınız güvenebileceğinizi her saat deyimini çalıştırın.

Bir deyim işleniyor

Temel, adımları SQL Server tek bir deyim işlemek için kullandığı şunlardır:

  1. Çözümleyici, deyim tarar ve bu anahtar sözcükler, ifadeler, işleçler ve tanıtıcılar gibi mantıksal birimler halinde keser.

  2. Bazen bir sıra ağacı adlandırılan BIR sorgu ağacı, kaynak veriler, sonuç gerekli biçime dönüştürmek için gereken adımları mantıksal açıklayan yerleşik küme.

  3. sorgu iyileştiricisi, kaynak tablolar erişilebilen farklı bir şekilde inceler.Sonra daha az kaynak kullanarak en hızlı sonuçlar döndüren dizi adımı seçer.Bu tam dizi kaydetmek için sorgu ağaç güncelleştirildi.Son, en iyi duruma getirilmiş sürüm sorgu ağacının yürütme planı denir.

  4. ilişkisel altyapı yürütme planı çalıştırma başlatır.Temel tablodan veri gerektiren adımlar işlenir gibi ilişkisel altyapı depolama motoru ilişkisel altyapı istenen satır kümeleri arasında verileri aktarmak ister.

  5. Sonuç için tanımlanan biçime depolama alt yapısı döndürülen verilerin ilişkisel altyapı işlemleri küme ve sonucu verir küme istemcisine.

Diğer ifadeleri işleniyor

Bir deyim uygulamak için başka bir SQL deyim gibi bir işlem için tanımlanan temel adımları INSERT, UPDATE ve DELETE.Her ikisi de gerekir, UPDATE ve DELETE deyimleri hedef küme değiştirilen veya silinen satır.Sonucu katkıda bulunan kaynak satırları tanımlamak için kullanılan aynı işlem bu satırları tanımlama işlemi olan küme SELECT deyiminin.UPDATE ve INSERT deyimleri, her ikisi de veri değerleri, eklediğiniz veya güncelleştirilmesi için katıştırılmış bir SELECT deyimi içerebilir.

ALTER tablo, CREATE PROCEDURE ya da hatta veri tanımlama dili (DDL) deyimleri sonuç ilişkisel operasyonlar Sistem katalog tablolarda ve bazı durumlarda (örneğin ALTER tablo ADD sütun) bir dizi veri tablolarını karşı çözümlenir.