Aracılığıyla paylaş


SQL deyimi işleme

Tek SQL deyim işlerken olduğu en temel yolu, SQL Server yürütür sql deyimleri.Yalnızca yerel temel tabloları (görünümler veya uzak tabloları) başvuran tek bir deyim işlemek için kullanılan adımlar temel işlemi gösterilmektedir.

select deyimleri en iyi duruma getirme

Bir deyim nonprocedural; Veritabanı sunucusu, istenen veri almak için kullanacağı kesin adımlar il.Bu deyim istenen veri ayıklamak için en etkili yolu belirlemek için veritabanı sunucusu analiz etmek gerekir anlamına gelir.Bu seçim en iyi duruma getirme olarak adlandırılır deyim.Bunu yapan bileşen adı verilen sorgu iyileştiricisi.Giriş için en iyi duruma getiricisi sorgu, veritabanı şeması (Tablo ve dizin tanımları) ve veritabanı istatistikleri oluşur.Çıkış iyileştirici bir sorgu yürütme planı, bazen da adlandırılır olarak bir sorgu planı veya yalnızca bir plan.Bir sorgu planı içeriğini daha fazla ayrıntı bu konunun ilerisinde açıklanmıştır.

Giriş ve çıkışlarına sorgu iyileştiricisi tek bir seçim en iyileştirme sırasında deyim gösterildiği Aşağıdaki diyagramda:

SELECT deyiminin sorgu optimizasyonu

Yalnızca aşağıdaki deyim tanımlar:

  • Sonuç küme biçimi.Bu çoğunlukla seçme listesinde belirtildi.Ancak, sipariş ve grup tarafından gibi diğer yan tümceleri son biçimini de etkiler sonuç küme.

  • Kaynak verileri içeren tabloları.Bu from yan tümce tümce tümcesinde belirtilir.

  • Nasıl tablolar deyim amacıyla mantıksal olarak ilişkilidir.Bu birleştirmek belirtimleri, where yan tümce tümce tümcesinde veya Kimden izleyen on yan tümce tümce tümcesinde görünebilir tanımlanır.

  • Kaynak tablodaki satır nitelemek için deyim yinelenip yinelenmeyeceği koşulları.Bunlar nerede belirtilir ve HAVING yan tümceleri.

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

  • Kaynak tablolar erişilen sırası.

    Genellikle, veritabanı sunucusunun sonuç küme oluşturmak için temel tablolar erişebilirsiniz birçok serileri vardır.Örneğin, deyim üç tablo başvurursa, veritabanı sunucusuna ilk erişim TableA, verilerini kullanmak TableA eşleşen satırları ayıklamak için TableBve sonra verileri TableB gelen verileri ayıklamak için TableC.Veritabanı sunucusuna tablolara erişim sıralarını şunlardır:

    TableC, TableB, TableA, veya

    TableB, TableA, TableC, veya

    TableB, TableC, TableA, veya

    TableC, TableA, TableB

  • Her verileri ayıklamak için kullanılan yöntemleri tablo.

    Genellikle, her veri erişim için farklı yöntemler vardır tablo.Yalnızca belirli anahtar değerleri olan bir kaç satır gereklidir, dizin veritabanı sunucusu kullanabilirsiniz.Tablodaki tüm satırların gerekliyse, veritabanı sunucusu dizinleri yoksay ve bir tablo taraması gerçekleştirin.Bir tablodaki tüm satırların gereklidir, ancak dizin anahtar sütunları olan bir order BY'de vardır, bir tablo taraması yerine bir dizin taramayı gerçekleştiren ayrı bir tasarruf tür sonuç küme.Bir tablo çok küçük ise, tablo taramaları hemen hemen tüm erişim tablo için en etkili yöntem olabilir.

Birçok olası planları potansiyel bir yürütme planı seçme işlemini en iyi duruma getirme verilir.sorgu iyileştiricisi sql veritabanı sisteminin en önemli bileşenlerinden biridir.Bazı ek yük bir plan seçin ve sorguyu çözümlemek için sorgu en iyi duruma getiricisi tarafından kullanılır, ancak sorgu iyileştiricisi etkili yürütme planını seçer bu yükünü genellikle several-fold kaydedilir.Örneğin, iki inşaat şirketleri aynı kopyaları bir ev için verilebilir.Bir şirket birkaç gün nasıl evin oluşturacak planlamak için başına geçirdiği ve diğer şirket bina, geçen şirket planlama olmadan başlar, saat kendi proje planlamak için muhtemelen önce tamamlanır.

The SQL Server query optimizer is a cost-based optimizer.Her olası yürütme planı kullanılan bilişim kaynağı miktarı bakımından ilişkili bir maliyeti vardır.sorgu iyileştiricisi, olası planlarını incelemek ve en düşük tahmini maliyetini ile seçilecek.Bazı karmaşık select deyimleri olası yürütme planları binlerce vardır.Bu gibi durumlarda, sorgu iyileştiricisi olası tüm bileşimlerini çözümlemek.Bunun yerine, kabul edilebilir yakın için olası en düşük maliyeti maliyeti olan yürütme planı bulmak için karmaşık algoritmalar kullanır.

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

sorgu iyileştiricisi Bir tablo ya da dizin bilgileri ayıklamak için farklı yöntemler kaynak maliyetlerini tahmin eder, dağıtım istatistikleri dayanır.Dağıtım istatistikleri sütunları ve dizinler için tutulur.Belirli bir dizin veya sütun değerleri meydana geldikleri.Örneğin, bir tablo otomobilleri temsil eden, birçok otomobiller aynı üreticinin olsa da, her otomobil bir benzersiz ruhsat numarası (Toplamıdır) vardır.Toplamıdır üzerinde bir dizin üzerinde üretici daha seçici dizinidir.Dizin istatistikleri geçerli, yoksa sorgu iyileştiricisi tablo geçerli durum için en iyi seçim yapabilir.Geçerli dizin istatistikleri tutma hakkında daha fazla bilgi için bkz: İstatistikler sorgu performansını artırmak için kullanma.

sorgu iyileştiricisi, programcı veya veritabanı yöneticisi girdisini gerek kalmadan değişen koşullarına veritabanında dinamik olarak değiştirmek veritabanı sunucusu sağladığından önemlidir.Bu programcıların sorgu sonucunu açıklayan üzerinde odaklanmanıza olanak tanır.Sorgu en iyi duruma getiricisi için veritabanının durumunu verimli yürütme planı oluşturacak güvenebileceği her saat deyimni çalıştırın.

Bir select deyimi işleme

Basic, adımlar SQL Server tek bir deyim işlemek için kullandığı şunlar:

  1. Ayrıştırıcı deyim tarar ve bu anahtar sözcükler, ifadeler, işleç ve tanımlayıcıları gibi mantıksal birimlerine keser.

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

  3. sorgu iyileştiricisi Farklı şekillerde kaynak tablolar erişilebilir çözümler.Sonra daha az kaynak kullanarak en hızlı sonuçlar döndüren dizi adımı da seçer.Sorgu ağacı, tam bu dizi kaydetmek için güncelleştirilir.Yürütme planı son, en iyi duruma getirilmiş sürüm sorgu ağacı denir.

  4. ilişkisel altyapı Yürütme planı yürütme başlatır.Temel tablodan veri gerektiren adımlar işlenen gibi ilişkisel altyapı depolama motoru tarafından istenen satır kümeleri arasında verileri geçirmek istekleri ilişkisel altyapı.

  5. ilişkisel altyapı İşlemler için sonuç küme ve sonucu verir tanımlanan biçimine döndürülen depolama motoru ' veriler istemciye ayarlayın.

Diğer deyimleri işleme

Bir select işlemek için açıklanan temel adımları deyim uygulamak için diğer sql deyimINSERT, update ve delete gibi s.update ve delete deyimlerinde hem zorunda hedef değiştirilmiş veya silinmiş satır küme.Bu satırları tanımlama işlemi seçin sonuç kümeni katkıda bulunan kaynak satırları tanımlamak için kullanılan aynı işlemdir deyim.update ve Insert deyimlerini eklenen veya güncelleştirilmesi için veri değerleri sağlayan gömülü select deyimleri içeriyor olabilir.

Veri tanımlama dili (ddl) deyimleri, create procedure ya da alter table gibi sonuçta ilişkisel işlemleri sistem katalog tablolarında ve bazı durumlarda (örneğin tabloyu Değiştir sütunu Ekle) bir dizi karşı veri tabloları çözümlenir.