ďťż
 
[MSSQL2005] procedura-dziwy ! ďťż
 
[MSSQL2005] procedura-dziwy !
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MSSQL2005] procedura-dziwy !



Krzysztof Naworyta - 28-07-2007 00:01
[MSSQL2005] procedura-dziwy !
  Witam serdecznie,

dziś zaczęło się dziać coś kompletnie dla mnie niezrozumiałego ...

Mam procedurę, która szkicowo wygląda jak poniżej.
(Pierwotnie był zwykły select z union, ale ponieważ coś zaczęło dzisiaj
długo trwać, uciekłem się do tabeli tymczasowej; mniejsza...)

W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i
zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set
nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę ponad
100 rekordów.

Jeśli jednak wywołam procedurę:
exec jakasprocedura '20070718', '20070726'
to całość męczy sie kilkanaście minut !
(rekordów tyle samo)

Sprawdziłem plany w obydwóch przypadkach. Niczym się nie różnią.

Ktoś spotkał się z czymś takim ?
Zresetować serwer czy co ?

pozdrawiam
KN

/*----------- start procedury ----------- */

ALTER procedure [dbo].[jakasprocedura]
(
@data_start datetime
, @data_koniec datetime
)
as

-- tu jest początek zaznaczenia, gdy wywołuję statementy 'z palca'

set nocount on
set transaction isolation level snapshot

--declare @data_start datetime
--declare @data_koniec datetime

--set @data_start = '20070718'
--set @data_koniec = '20070726'

declare @tmp table
(
jakes_pola
)

/* ------------------ insert into --------------------- */

insert into @tmp
select
jakies_pola_i_agregacje
from
DuzaTabela w
inner join
tLog g
on
w.usins=g.id_log
inner join
Pracownicy a
on
g.sqlUser = a.sqlUser
where
g.logdata between @data_start and @data_koniec
group by
a.pracownik
, g.logdata

/* ------------------ insert into --------------------- */

insert into @tmp
select
jakies_pola_i_agregacje
from
DuzaTabela w
inner join
tLog g
on
w.usmod=g.id_log
inner join
Pracownicy a
on
g.sqlUser = a.sqlUser
where
g.logdata between @data_start and @data_koniec
and
group by
a.pracownik
, g.logdata

/* ------------------ WYNIK --------------------- */

select * from @tmp

/* ------------- koniec procedury ---------------- */





Borafu - 28-07-2007 00:01

  Krzysztof Naworyta pisze:

> W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i
> zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set
> nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę ponad
> 100 rekordów.
>
> Jeśli jednak wywołam procedurę:
> exec jakasprocedura '20070718', '20070726'
> to całość męczy sie kilkanaście minut !
Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być
spowodowane i jak to zdiagnozować.
Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient
nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i
mołem ją po prostu usunąć, ale cały czas mnie to męczy.

Pozdro
--
Borafu




Borafu - 28-07-2007 00:01

  Borafu pisze:

> Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być
> spowodowane i jak to zdiagnozować.
> Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient
> nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i
> mołem ją po prostu usunąć, ale cały czas mnie to męczy.

Dodam tylko, że ja walczyłem na MS SQL 2000

Pozdro
--
Borafu




Krzysztof Raczkowski - 28-07-2007 00:01

  Borafu pisze:
> Krzysztof Naworyta pisze:
>
>> W czym problem? Jeśli odremuję początkowe deklaracje zmiennych i
>> zaznaczę całość oprócz nagłówka procedury (czyli zaznaczając od "set
>> nocount on"), to całość wykonuje się w 3 sekundy, zwracając trochę
>> ponad 100 rekordów.
>>
>> Jeśli jednak wywołam procedurę:
>> exec jakasprocedura '20070718', '20070726'
>> to całość męczy sie kilkanaście minut !
> Też miałem taki przypadek i bardzo jestem ciekaw czym to m0że być
> spowodowane i jak to zdiagnozować.
> Ja swojego rozwikłałem, tylko ominąłem. Po prostu okazało się, że klient
> nie potrzebuje tej informacji którą wydobywała nieszczęsna procedura i
> mołem ją po prostu usunąć, ale cały czas mnie to męczy.
>
> Pozdro

W MS SQL 2005 są raporty dotyczące działalności bazy, m.in. znajdziesz
tam statystyki dotyczące wykonywanych procedur (z podziałem na części i
czasy wykonania). Ciekawe jak ta procedura wygląda w tych statystykach ...

--
Pozdrawiam
K. Raczkowski
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?= [MS SQL 2000/2005] Procedura z dynamicznym SQL =?iso-8859-2?q?Procedura_sk=B3adowalna_wywo=B3ywana_o_okreslo nej_godzinie?= [ORACLE] Stored Procedures - jaki typ danych przy dostępnie poprzez ADO? =?iso-8859-2?q?[Mysql_5=2E0]_Wywo=B3ywanie_procedury_jako_parametr_funkcji?= [MySQL5] problem z zastosowanie funkcji, procedury w celu unikniecia powtórzeń kodu w zapytaniach =?iso-8859-2?q?wysy=B3anie_emaila_za_pomoca_procedury_skladow anej_Oracle?= =?iso-8859-2?Q?=5Boracle_pl/sql=5D_r=F3=BFnice_w_tworzeniu_procedur?= =?iso-8859-2?q?Nazwa_Tabeli_jako_parametr_w_procedurze_sk=B3a dowanej?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lisinski.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com