Udostępnij za pośrednictwem


Przygotowywanie instrukcji SQL

SQL Server aparat relacyjny wprowadzono pełną obsługę przygotowywania instrukcji SQL przed wykonaniem.Jeśli aplikacja ma wykonać instrukcja języka SQL kilka razy API bazy danych można użyć do wykonania następujących czynności:

  • Przygotować po instrukcja.Kompiluje do plan wykonania instrukcja języka SQL.

  • Wykonanie planu wykonania skompilowanych co czas ma wykonać instrukcję.Pozwala to uniknąć konieczności ponownego kompilowania instrukcja języka SQL na wykonanie każdego po pierwszym czas.

    Przygotowywanie i wykonywanie instrukcji jest kontrolowana przez funkcje interfejsu API i metod.Nie jest częścią Transact-SQL języka.Modelu przygotowanie/wykonać wykonywanie instrukcji SQL jest obsługiwany przez SQL Server macierzystego klienta dostawcy OLE DB i SQL Server sterownik ODBC macierzystym klienta.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.Na żądanie wykonać dostawca lub sterownik wysyła serwer żądanie wykonać planu, który jest skojarzony z uchwytu.

Przygotowanych instrukcji nie można używać do tworzenia tymczasowych obiektów na SQL Server.Nie można odwołać przygotowanych instrukcji procedury składowane w systemie , utworzyć tymczasową obiekty, takie jak tabele tymczasowe.Procedury te muszą być wykonane bezpośrednio.

Nadmiar korzysta z modelu przygotowanie/wykonać może obniżyć wydajność.Jeśli instrukcja jest wykonywane tylko raz, bezpośrednie wykonanie wymaga tylko jednego sieci przesyłania danych do serwera.Przygotowywania i wykonywania instrukcji SQL wykonana tylko jeden czas wymaga dodatkowych sieci przesyłania danych; jednego rejsu do przygotowania instrukcja i jednego rejsu do jego wykonać.

Przygotowanie instrukcja jest bardziej skuteczne, jeśli używane są znaczniki parametru.Na przykład załóżmy, że aplikacja czasami jest proszony o pobrać informacje o produkcie z AdventureWorks2008R2 przykładowej bazy danych.Aplikację można to zrobić na dwa sposoby.

Za pomocą pierwszy sposób, aplikacja może wykonać odrębnej kwerendy dla każdego produktu, na żądanie:

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

Używając drugi sposób, aplikacja wykonuje następujące czynności:

  1. Przygotowuje instrukcja zawierający znacznik parametru (?):

    SELECT * FROM AdventureWorks2008R2.Production.Product
    WHERE ProductID = ?;
    
  2. Znacznik parametru jest powiązana zmiennej program.

  3. Każdy czas informacje o produkcie jest potrzebne, wypełnia wartość klucz powiązania zmiennej i wykonuje instrukcję.

Drugi sposób jest bardziej efektywne, po wykonaniu instrukcja więcej niż trzy razy.

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.Jeśli aplikacja wykonuje instrukcja języka SQL ze znacznikami parametr wiele razy SQL Server wykorzystywane ponownie z pierwszym wykonaniu dla drugiego i następnych wykonania planu wykonania (chyba że plan w wieku lat z pamięci podręcznej procedurę).Modelu przygotowanie/wykonać nadal ma następujące zalety:

  • Znajdowanie plan wykonania przez identyfikujące dojście jest bardziej wydajny niż algorytmów używanych do instrukcja języka SQL do istniejących planów wykonywania.

  • Aplikację można kontrolować utworzenia planu wykonania i gdy jest wykorzystywany.

  • Modelu przygotowanie/wykonać jest przenośny do innych baz danych, w tym wcześniejsze wersje programu SQL Server.