Sziasztok!
Boldogult emlékezetű Raima adatbázis-kezelőben volt egy olyan trükk, hogy egy indexet le tudtál korlátozni egy tartományra. Ilyesmit gondoltam a BTBTX motorba tenni. Perpill ugye a filterezés rekordonként eval-olja a kódblokkot, ami természetesen nagyobb táblán használhatatlan, de rengeteg az ilyen kód:
TABLA:control:="valami"
TABLA:seek(ertektol)
if (TABLA:found())
do while (!TABLA:eof() .and. TABLA_VALAMI<=ertekig)
...
TABLA:skip()
enddo
endif
Ehelyett szeretnék egy ilyet:
TABLA:control:="valami"
TABLA:setrange(ertektol,ertekig)
TABLA:gotop() // esetleg TABLA:gorangetop(), hogy látszódjon, hogy range van rajta
do while (!TABLA:eof()) // esetleg TABLA:eor(), mint end-of-range
...
TABLA:skip()
enddo
és ő rendezné el belül a dolgokat. Értelemszerűen ha az index több mezőből áll, akkor ertektol és ertekig is tömbök, ez voltaképp nem oszt, nem szoroz.
Mit gondoltok erről?
w
- 4487 megtekintés
Hozzászólások
Elvileg lehet(ne) olyan indexeket csinálni, ami nem tartalmazza a kiszűrt rekordokat. Ennek előnye volna, hogy hatékonyan navigál, hátránya, hogy elszaporodnak az indexek. Nem is kellene az indexelő "primitíveket" módosítani, csak a táblaobjektum<->btree interfészt. Én ezzel nem akarok foglalkozni, aki akarja, csinálja.
Vannak alkalmazásszintű félmegoldások, ide raktam egyet. Ez egy CCC2 program, olyan kódblokkokkal szereli fel a browse-t, hogy az kulcsokkal megadott intervallumra korlátozza a scrollozást.
--
CCC3
- A hozzászóláshoz be kell jelentkezni