Aracılığıyla paylaş


Hazırlanmış yürütme

odbc API hazırlanmış yürütme ayrıştırma azaltmak için bir yol olarak tanımlar ve sürekli yürütme ile ilişkili Derleme yükü bir Transact-SQLdeyimi. Uygulama sql deyimi içeren bir karakter dizesi oluşturur ve sonra iki aşamalı olarak yürütür. Aramaları SQLPrepare işlevi ayrıştırılmış ve yürütme planı tarafından içine derlenmiş deyimi için bir kez Veritabanı Altyapısı. Daha sonra çağırır SQLExecute için hazırlanmış yürütme planı her yürütme. Bu ayrıştırma ve her yürütme yükü derleme kaydeder. Hazırlanmış yürütme yaygın uygulamalar tarafından tekrar tekrar aynı, parametreli sql deyimini yürütmek için kullanılır.

Çoğu veritabanı için hazırlanmış yürütme doğrudan yürütme fazla üç deyimleri çalıştırılır ya da öncelikle deyimi yalnızca bir kez doğrudan yürütülen deyimleri derlenir çünkü dört kez her zaman bunların yürütülme derlenen hızlıdır. Şoför-ebilmek göndermek yürütme planı tanımlayıcı ve parametre değerleri yerine tüm sql deyimi, veri kaynağına deyimi yürütüldüğünde her zaman çünkü hazırlanmış yürütme de ağ trafiğinde azalma sağlayabilir.

SQL Servertespit ve yeniden yürütme planları için geliştirilmiş algoritmaları ile doğrudan ve hazırlanmış yürütme arasındaki performans farkı azalır SQLExecDirect. Bu bazı hazırlanmış yürütme performans yararları doğrudan yürütülen deyimleri için kullanılabilir yapar. Daha fazla bilgi için bkz: Doğrudan yürütme.

SQL ServerAyrıca hazırlanmış yürütme için yerel destek sağlar. Yürütme planı üzerine kurulmuştur SQLPrepare ve daha sonra ne zaman idam SQLExecute denir. Çünkü SQL Servergeçici saklı yordamları oluşturmak için gerekli olan SQLPrepare, orada sistem tabloları hiçbir ilave yük tempdb.

Performansı düşürmemek için deyimi hazırlanması kadar ertelenmiş SQLExecute denir ya da bir metaproperty işlemi (gibi SQLDescribeCol veya SQLDescribeParam ODBC) gerçekleştirilir. Bu varsayılan davranıştır. Hazırlanan deyimi hatalar deyimi yürütüldüğünde veya bir metaproperty işlemi gerçekleştirilen kadar bilinmemektedir. Ayar SQL Serveryerel istemci odbc sürücüsü özgü deyimi özniteliği sql_sopt_ss_defer_prepare sql_dp_off için bu varsayılan davranışı devre dışı açabilirsiniz.

Durumunda ertelenmiş hazırlamak, ya da çağrı SQLDescribeCol veya SQLDescribeParam önce arama SQLExecute sunucusuna ekstra bir gidiş dönüş oluşturur. Tarih SQLDescribeCol, sürücü where yan tümcesi sorgudan kaldırır ve ilk sonuç kümesi içindeki sütunları açıklaması sorgu tarafından döndürülen almak için set fmtonly sunucuya gönderir. Tarih SQLDescribeParam, ifadeler ya da herhangi bir parametre imleyicileri sorgu tarafından başvurulan sütunları açıklaması almak için sunucu sürücüsünü çağırır. Bu yöntem ayrıca parametreler alt sorgular içinde çözmek mümkün olmadığı gibi bazı kısıtlamaları vardır.

Aşırı kullanımı SQLPrepare ile SQL Serveryerel istemci odbc sürücüsü performans, özellikle SQL Server'ın önceki sürümleri için bağlanıldığında alçaltır. Tek bir zaman yürütülen deyimleri için hazırlanmış yürütme kullanılmamalıdır. Sunucu istemciden bir ilave ağ gidiş gerektirdiğinden hazırlanmış yürütme doğrudan çalıştırılmak üzere bir deyimi tek bir yürütme yavaştır. Önceki sürümlerinde SQL Serverda geçici saklı yordam oluşturur.

Geçici nesneler oluşturmak için hazır deyimler kullanılamaz SQL Server.

Kullanılan bazı erken odbc uygulamaları SQLPrepare zaman SQLBindParameter kullanıldı. SQLBindParameter kullanımını gerektirmez SQLPrepare, it can be used with SQLExecDirect. Örneğin, SQLExecDirect ile SQLBindParameter dönüş kodu almak veya yalnızca yürütülen bir kez bir saklı yordam parametreleri çıktı. Kullanmayın SQLPrepare ile SQLBindParameter sürece birden çok kez aynı deyimi yürütülür.

Ayrıca bkz.

Kavramlar

Yürütülen deyimleri (odbc)