Katarzyna Pytlik

Katarzyna Pytlik Zespół Rozwoju
Aplikacji, CBB Call
Center

Temat: [mssql] Problem z procedurą

Witam,

na mssql mam zapytanie, którego wykonanie trwa ok. 7-10 sekund (dużo rekordów, kilka tabel i złożone warunki złączenia).

Na szybko ma taką składnię:
-deklaracja dwóch zmiennych
-utworzenie dwóch tabel tymczasowych, z których wyników korzystam później w "where"
-insert into istniejąca tabela
-select ...

Ten czas generalnie mnie satysfakcjonuje.

Jednak kiedy obudowuję treść zapytania w procedurę wyrzucając tylko deklaracje dwóch zmiennych (dataOd i dataDo) do parametrów procedury, wykonuje się ona...nawet nie wiem ile, bo po kilkunastu minutach braku odpowiedzi przerywałam proces...

Czy ktoś z Was spotkał się kiedyś z taką sytuacją?

Czy "insert" może zabierać tyle czasu?

Będę wdzięczna za jakąś wskazówkę.

konto usunięte

Temat: [mssql] Problem z procedurą

na dzieńdobry brakuje mi indeksów na tabelach tymczasowych na polach uzytych w where
napisz jaka wersja sql i podaj plan wykonania dla query i dla procedury

konto usunięte

Temat: [mssql] Problem z procedurą

Zadeklaruj wewnątrz procedury dwie zmienne, przypisz do nich swoje parametry i użyj tych zmiennych zamiast parametrów w swojej procedurze.
Katarzyna Pytlik

Katarzyna Pytlik Zespół Rozwoju
Aplikacji, CBB Call
Center

Temat: [mssql] Problem z procedurą

Nie bardzo rozumiem. Męczyłam się z tym całe wczorajsze popołudnie.
Przed chwilą wykonałam to wszystko jeszcze raz i ... liczy się w czasie analogicznym jak czyste zapytanie...

Ale swoją drogą poczytam o indeksach - bo wiem, że przyspieszają, wypadałoby się w końcu nauczyć ;)

Dziękuję za reakcję :)

konto usunięte

Temat: [mssql] Problem z procedurą

Radosław Zajączkowski:
Zadeklaruj wewnątrz procedury dwie zmienne, przypisz do nich swoje parametry i użyj tych zmiennych zamiast parametrów w swojej procedurze.

tak było w 2005, dlatego pytałem o wersję
w 2008 masz hint OPTIMIZE FOR UNKNOWN

konto usunięte

Temat: [mssql] Problem z procedurą

Robert Kubalski:

tak było w 2005, dlatego pytałem o wersję
w 2008 masz hint OPTIMIZE FOR UNKNOWN

Dzięki za wskazówkę - nie wiedziałem o tym :) Na co dzień pracuję z wer. 2005 i dlatego automatycznie o tym napisałem, bo kiedyś miałem podobny problem.
Katarzyna Pytlik

Katarzyna Pytlik Zespół Rozwoju
Aplikacji, CBB Call
Center

Temat: [mssql] Problem z procedurą

Korzystam z 2005.
Jednak coś dalej jest nie tak. Rano wykonała się szybko, przed chwilą znów zamula.
Katarzyna Pytlik

Katarzyna Pytlik Zespół Rozwoju
Aplikacji, CBB Call
Center

Temat: [mssql] Problem z procedurą

Wrzuciłam parametry do nowych zmiennych i działa jeszcze szybciej.
Dzięki!

Możecie mi wytłumaczyć dlaczego?

konto usunięte

Temat: [mssql] Problem z procedurą

jak kompilujesz plan dla jakiegoś wywołania to podajesz mu parametry i plan wykonywany jest pod te parametry, plan idzie do kesza i gdy drugi raz wywolasz tę procedurę zostaje użyty tamten plan a rozkład danych w twoich tabelach może byc inny dla poszczególnych parametrów.
sztuczka Radka albo hint powoduje to że serwer nie przyjmuje tego konkretnego parametru jako punkt wejsciowy tylko podchodzi trochę bardziej ogólnie.
procedura zadziała gorzej dla parametru pierwszego ale lepiej dla wszystkich innych
Tomasz Radomski

Tomasz Radomski Programista baz
danych,
Statconsulting

Temat: [mssql] Problem z procedurą

Witam,
A czy nie lepiej utworzyć procedurę z opcja with recompile:

CREATE PROCEDURE jakas_procedura WITH RECOMPILE......
lub poprostu uruchomic procedurę
EXEC jakas_procedura WITH RECOMPILE
Tomasz Radomski

Tomasz Radomski Programista baz
danych,
Statconsulting

Temat: [mssql] Problem z procedurą

Witam,
A czy nie lepiej utworzyć procedurę z opcja with recompile:

CREATE PROCEDURE jakas_procedura WITH RECOMPILE......
lub poprostu uruchomic procedurę
EXEC jakas_procedura WITH RECOMPILE

konto usunięte

Temat: [mssql] Problem z procedurą

nie bo jezeli procedura się wykonuje 100 razy na minute to jest 100 razy kompilowana, a to duża strata i widać to po wyczyszczeniu buforów albo przy pierwszym odpaleniu procki i tu zawsze będzie pierwsze odpalenie
a tak procedura kompilowana jest razRobert Kubalski edytował(a) ten post dnia 20.01.11 o godzinie 13:26

Następna dyskusja:

MSSQL 2008E - problem z Mic...




Wyślij zaproszenie do