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:







  1. A kérelmet a jövedelem: SELECT NAME, DENGI cash WHERE DENGI> = 0.
  2. Ezután egy kérelmet kiadások: SELECT NAME, DENGI cash WHERE DENGI.
  3. Ezután kiszámítjuk a teljes összeg a jövedelem: SELECT SUM (DENGI) a pénzforgalmi WHERE DENGI> = 0.
  4. És végül, a teljes összeg a költségek: SELECT SUM (DENGI) a pénzforgalmi WHERE DENGI.
  5. 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:




Kapcsolódó cikkek