Maly (zcela realny) priklad. M$SQL (jedno jake verze). cosi is null vs isnull(cosi,0) = 0. Druha varianta je asi tak 100x rychlejsi. Divne co? Dtto prozmenu pouziti datediff() je asi tak 1000x pomalejsi, nez proste odecitani/scitani. Nekdy o tom, jestli dotaz vubec dobehne, rozhoduje i poradi.
Prosím nezobecňuje chování všech SQL databází podle jedné implementace, navíc zrovna takové hodně špatné. Microsoft SQL je jen hračka dobrá nanejvýš pro zpracování malých dat, i když uznávám že to verzi od verze celkem dost zlepšují - ke špičkovým databázím mají ale ještě daleko.
Uvadim zcela konkretni priklady na zcela konkretnim typu databaze, zobecnuje tu nekdo jiny bych rek. A chovani databaze se zapisem dotazu naopak ovlivnuje velmi dobre, a byva dobrym zvykem tech, kteri vedi co cini, to i delat. On totiz ten parser psal taky clovek, takze cim primocarejsi a pochopitelnejsi je zapis, tim vetsi sance je, ze to DB pochopi presne tak, jak to pisatel mini. Zapisem se da kuprikladu velmi dobre ovlivnit, jake idexy databaze pouzije (a v nekterych implementacich to lze pak i vynutit).
Dufam ze nahradenie "cosi is null" vyrazom "isnull(cosi,0) = 0" nepatri medzi tvoje standartne programove riesenia....
Ak hej... lopata ti pristane viac....
No jiste, kvuli tupcum jako ses ty budu pouzivat 100x pomalesi dotaz ... ja totiz (nejspis narozdil od tebe) nejsem placenej za to, jak query vypada, ale za to, jak funguje. Uz vidim, jak zakaznikovi vysvetlujes, ze to zauctovani faktury trva sice 10 minut, a on kvuli tomu tech 10 minut nemuze delat nic jinyho, ale ten dotaz prece vypada tak krasne.
Mimochodem, muj rekord je pokud si pamatuju dobre 30minut vs 30s. (samo, nejen uprava dotazu, on si nejen tvurce rejstriku aut mysli, ze index je sprosty slovo).