Aracılığıyla paylaş


SQL deyimleri hazırlanıyor

The SQL Server relational engine introduces full support for preparing SQL statements before they are executed.Uygulama birkaç kez SQL deyim yürütmek, aşağıdakileri yapmak için veritabanı API kullanabilirsiniz:

  • Hazırlama deyim sonra.Bu, SQL deyim yürütme planı içinde derler.

  • Derlenmiş yürütme planı deyimini yürütmek varsa her saat çalıştırabilirsiniz.Bu, her yürütme sonrasında ilk kez, SQL deyim yeniden gerek kalmadan önler.

    Hazırlama ve yürütme ifadeleri API işlevlerini ve yöntemleri tarafından kontrol edilir.Değilse bir bölümüTransact-SQLdili.Tarafından desteklenen SQL deyimi yürütmek hazırla/Yürüt modelindenSQL ServerYerel istemci OLE DB sağlayıcı veSQL ServerYerel istemci ODBC sürücüsü.On a prepare request, either the provider or the driver sends the statement to SQL Server with a request to prepare the statement.SQL Server compiles an execution plan and returns a handle for that plan to the provider or driver.Bir yürütme isteği sağlayıcıyı veya sürücü, sunucu ile tutamacı ilişkilendirilmiş olan planı yürütmek için bir istek gönderir.

Hazır deyimler geçici bir nesne oluşturmak için kullanılamazSQL Server.Hazır deyimler, geçici tablolar gibi geçici nesneleri oluşturan Sistem saklı yordamları başvuramaz.Bu işlemleri doğrudan yürütülmelidir.

Hazırlık kullanımı fazla / yürütmek modeli performans düşmesine neden.Varsa bir deyim yalnızca bir kez, sunucuya yalnızca bir ağ Eğer doğrudan bir yürütme gerektirir yürütülür.Hazırlama ve yalnızca saat fazladan gerektiren bir SQL deyim yürütmek d yürütme herşey; deyim hazırlamak için bir gezi ve bir gezi için ağ yürütmek onu.

Bir hazırlama parametre imleyicileri kullanılırsa daha etkili olur.Örneğin, ürün bilgileri almak için uygulamanın zaman zaman sorular varsayalımAdventureWorks Örnek veritabanını. Uygulama Bunun iki yolu vardır.

Birinci yol kullanarak, uygulama için yürütmek istenen her ürün için ayrı bir sorgu:

SELECT * FROM AdventureWorks.Production.Product
WHERE ProductID = 63;

İkinci yolu kullanarak, uygulama şunları yapar:

  1. Bir parametre işaretçisi (?) içeren bir deyim hazırlar:

    SELECT * FROM AdventureWorks.Production.Product
    WHERE ProductID = ?;
    
  2. Parametre işaretçisi için programın değişken bağlar.

  3. Her saat ürün bilgisi gerekiyor, bağımlı değişken anahtar değeriyle doldurur ve deyim yürütür.

Üç katından fazla deyim yürütüldüğünde, ikinci yolu daha etkilidir.

In SQL Server, the prepare/execute model has no significant performance advantage over direct execution, because of the way SQL Server reuses execution plans.SQL Server has efficient algorithms for matching current SQL statements with execution plans that are generated for prior executions of the same SQL statement.Bir uygulama birçok kez parametrenin işaretli bir SQL deyim yürütürSQL Server(yordam önbellekten planı yaş grubundaki sürece), ikinci ve sonraki çalıştırma için ilk çalıştırma yürütme planından yeniden kullanacaksanız.Hazırlık / yürütmek modelinin yine de aşağıdaki faydaları vardır:

  • Yürütme planı tanımlayan bir işleyici varolan yürütme planları için bir SQL deyim eşleştirmek için kullanılan algoritmalar daha etkili olur.

  • Uygulama yürütme planı oluşturulduğunda ve ne zaman yeniden denetleyebilirsiniz.

  • Hazırla/Yürüt modelinden diğer veritabanlarına, daha önceki sürümleri de dahil olmak üzere taşınabilirSQL Server.