Share via


SQL deyimlerini hazırlama

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

  • Bir kez deyim hazırlayın.Bu, sql deyim yürütme planı içine derler.

  • Yürütülecek olan her saat önceden derlenmiş yürütme planı yürütme deyim.Bu her yürütülmesine ilk sql ifadesini yeniden derlemek zorunda engeller saat.

    Hazırlama ve ifadeler çalıştırmasını API işlevleri ve yöntemleri tarafından denetlenir.Değil bir parçası Transact-SQL dili.sql deyimleri yürütmek hazırla/Yürüt modelinden tarafından desteklenen SQL Server yerel istemci ole db sağlayıcısını ve SQL Server yerel 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.Execute istek üzerine, sağlayıcı ya da sürücü sunucu tanıtıcısı ile ilişkili olan planı yürütmek için bir istek gönderir.

Geçici nesneler oluşturmak için hazırlanmış deyimleri kullanılamaz SQL Server.Hazırlanmış deyimleri geçici tablolar gibi geçici nesneler oluşturma sistem saklı yordamları başvuru yapamazsınız.Bu yordamlar doğrudan yürütülmelidir.

Fazla hazırlık kullanımı /yürütmek modeli performans düşebilir.Bir deyim yalnızca bir kez yürütülürse, doğrudan yürütme sunucuya yalnızca bir aðüzerinden gerektirir.Hazırlama ve sql deyim yürütme yürütülen tek bir saat bir ekstra aðüzerinden; gerektirir deyim ve bir gezi için hazırlamak için bir gezi yürütmek onu.

Bir deyim hazırlanıyor parametre imleyicileri kullanıldığında daha etkilidir.Örneğin, ürün bilgileri almak için bir uygulama bazen sorular varsayalım AdventureWorks2008R2 örnek veritabanı.Uygulama bu işlemi iki yolu vardır.

İlk biçimini kullanarak, bir uygulama olabilir yürütmek istenen her ürün için ayrı bir sorgu:

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

İkinci yolu kullanarak, uygulama aşağıdakileri yapar:

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

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

  3. Her saat ürün bilgisi gereklidir, anahtar değeri ile ilişkili değişken doldurur ve yürütür deyim.

İkinci yolu, üç defadan fazla deyim yürütüldüğünde 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 sql deyim parametre imleyicileri ile birden çok kez yürütür, SQL Server ikinci ve sonraki yürütmeler için ilk yürütülmesini yürütme planı yeniden kullanacaksanız (ndan planın yaş grubundaki sürece yordam önbelleği).Hazırlık /yürütmek modeli hala bu yararları vardır:

  • Yürütme planı bir tanımlayıcı tanıtıcıyla varolan yürütme planları için sql deyim eşleştirmek için kullanılan algoritmalar daha etkili olur.

  • Uygulama yürütme planı oluşturulduğunda ve ne zaman tekrar kontrol edebilirsiniz.

  • Hazırlık /yürütmek modeli önceki sürümleri de dahil olmak üzere diğer veritabanları için taşınabilir SQL Server.