Posted By: jerryiii (Vsude dobre, v CR nejhur) on 'CZdatabases'
Title: Re: Dlouhe transakce
Date: Thu Jun 14 00:47:40 2001
> Ahoj.
>
> Tak se proste muze stat, ze transakce prekroci urcitou mez, za kterou ji
> DB
> stroj proste sestreli.
Jojo, to je nechutna situace ... a nejhorsi ze s tim nic neudelas, pokud je
admin blbec tak si nepomuzes a vsichni to svadej na tebe ze ti to nefunguje
...
> Kdyz jsem vsechno odladil, vyhodil testovaci cykly a vypisy, tak mi ta
> transakce (radove asi 10 INSERTu, 40 SELECTU + jedna temporary tabulka)
> konci
> tak do 30 az 40 vterin (zalezi na vytizeni serveru - jednou mi jela minutu a
> pul :-)
Jeee, tak to sme si nerozumeli, ja sem mel na mysli veskrze single prikazy, je
videt ze nejsem datar :) pokud ti bezi 50 prikazu 30 sekund tak to je sakra
rychly, mas necelou sekundu na prikaz coz je v pohode ... Ja myslel ze mate
jeden prikaz kterej bezi deistky sekund i minut ...
A ted abych nebyl offtopic:
Mam dve tabulky, v jedny se udrzujou hledani, v druhy se udrzujou kriteria pro
kazdy hledani. Svazany sou pres sloupec [key] (ach ta fantazie) a ja
potrebuju zjistit, kolik hledani NEma v tabulce kriterii zaznamy - tj. kolik
jich bylo bez kriterii. V soucasny dobe to delam takhle:
SELECT count(*) FROM [request] WHERE [key] NOT IN (SELECT [key] FROM
[requestcriteria])
To je relativne jednoduchy, ale abych zjistil pocet tech co MA kriteria musim
udelat druhej select (budto count(*) from [request] a pak odecist anebo
vyhodit to NOT). A zajimalo by me, jestli se to da udelat nejak v jednom,
neco jako:
sum(CASE WHEN [key] IN (SELECT [key] FROM [requestcriteria]) THEN 1 ELSE NULL
END) AS [ma],
sum(CASE WHEN [key] IN (SELECT [key] FROM [requestcriteria]) THEN NULL ELSE 1
END) AS [nema]
Jenze na to mi server pise ze nemuzu mit subquery v agregovany funkci (proc
ne?). Takze, da se to nejak udelat?
A dalsi vec, jak muzu zjistit prumernej pocet zaznamu v [requestcriteria] na
jeden klic? Jednim prikazem nejlepe, zatim sem to delal takhle:
SELECT count(*) FROM [requestcriteria] GROUP BY [key] COMPUTE
avg(CAST(count(*) AS float))
ale to mi vraci dva recordsety pricemz ten prvni je pro me nepotrebnej a
zbytecne mi zatezuje sit a server (tim ze se posila).
Diky za napady, co se tyce DB tak sem lamer az to hezky neni :) Jo, bezi to na
SQL Serveru a jedna se o stovky tisic radku ...
> Jovo.
Jerry III
Enough said ...
http://jerryiii.home.sprynet.com/mica/index.htm