Csere átmeneti táblákat a Firebird
Ebben az esetben a probléma az, hogy DENGI oszlopot kell bontani két oszlopban kiszámításához a végösszeg. „Head-on” megoldás így néz ki:
- A kérelmet a jövedelem: SELECT NAME, DENGI cash WHERE DENGI> = 0.
- Ezután egy kérelmet kiadások: SELECT NAME, DENGI cash WHERE DENGI.
- Ezután kiszámítjuk a teljes összeg a jövedelem: SELECT SUM (DENGI) a pénzforgalmi WHERE DENGI> = 0.
- És végül, a teljes összeg a költségek: SELECT SUM (DENGI) a pénzforgalmi WHERE DENGI.
- A kapott eredmények több lekérdezést együtt egy kliens alkalmazás a táblázatban.
Összesen volt öt lekérdezések. Az ideiglenes táblák itt a leghatékonyabb megoldás. Firebird megoldás lenne:
A második megközelítés az, hogy a kombináció SELECT tároló változók tárolt eljárás korábbi értékeket a mezők az asztalra.
A megfelelő eljárás a következő lesz:
Mint egy speciális esete az első két megközelítés, meg kell jegyezni, a lehetőségét, hogy a beágyazott beszámoló SELECT INTO DO:
Ebben az esetben, ha úgy értelmezzük FOR SELECT mint egyfajta „átmeneti” tábla, akkor ez a csatlakozás biztosítja a lehetőséget, hogy a számos „ideiglenes” táblákat. Például, ha végzett egy külön táblázatban részletes nyilvántartást másik családtag ugyanazon a tábla szerkezetét a készpénz. de a nevét CASH2:
az, hogy a nagy, összesen két család tagjai a következő formában:
akkor végre a következő eljárást:
A harmadik megközelítés olyan esetekben használjuk, amikor lehetetlen feltételei szerint a probléma a fajta előzetes letöltési. Aztán szervezett ál ideiglenes tábla a szükséges mezőket az eljárást végzik az első töltés, majd tegye a szükséges feldolgozási ebben a táblázatban rekordokat. Itt a megoldás a problémára az a megfontolás veti a második megközelítés segítségével ál ideiglenes táblák:
Az eredmény az eljárás:
Mivel valamilyen okból a TEMP tábla maradhat „árva” régi feljegyzések, meg kell tisztítani, hogy rendszeres időközönként (itt kell használni TDATE kitölteni), például az alábbiak szerint:
Eltávolítása „árva” régebbi bejegyzések 10 nap
Magától értetődik, hogy a harmadik megközelítés a leglassabb is, mivel a folyosón a készpénzes asztalon kétszer hajtjuk végre, szintén a betét és frissítés rekordok az ál menetrend, és csak utána az eredményt. Ez azt is hozzáadjuk a feladata, hogy biztosítsa a rendszeres fogmosás TEMP tábla. Az első és második kiviteli fogják üzemeltetni gyakorlatilag jelentősen bystree- bejegyzések mintavételi arány. A tapasztalat azt mutatja, hogy az indexelés készpénzes asztalon a szitált mező NÉV vezetne az első lekérdezés eredményét néhány másodperc után még táblákon sok eredmény, hogy körülbelül 10 millió. Strings. Ugyanakkor, amikor a harmadik megközelítés az átvétel időpontjában az első feljegyzések lesz néhány másodperccel hosszabb a táblákat a rekordok száma mintegy 10 ezer. Strings. Például, az alábbi eredményeket (IBExpert program adatok) kaptuk elvégzésével ITOG2 ITOG4 és vizsgálati eljárások a fenti példákban: