Izpisovanje cca. 20000 zapisov iz baze

Zdravo mojstri. Rabim nekaj pomoči oz. idejo. V mySQL bazi imam tabelo s cca. 20000 zapisi. Vsak zapis je sestavljen iz 11 parametrov, torej 11 stolpcev.

To tabelo bi rad izpisal na spletni strani. :) Vem, velika količina podatkov. :) Spletna stran teče na Joomli, za izpisovanje podatkov pa uporabljam Ari Data Tables. V ta modul pač vpišem SQL query in modul izpiše lepo tabelo. Ker gre za veliko količno podatkov, se stran nalaga in nalaga, večkrat pa vrže tudi blank page, ker je dosežen PHP memory limit. Tako, da moram poiskati drugo rešitev.

Ker nisem nek hud programer iščem malo pomoči, kako to zapeljati. Glavni namen tega je iskanje po teh zapisih. ARI Data Tables ima to super rešeno, ker omogoča "on the fly" iskanje po teh zapisih, zato mi je všeč. Je sploh možno prikazati 20000 zapisov brez kakšnega hudega nalaganja? Ker trenutno se vedno vnovič izvede ta SQL query, ki seveda traja in traja, da ne omenjam sistemskih resursov.

Če to ne bo šlo ostane opcija iskalnika kot obrazca, torej iščem vse zapise iz Ljubljane izberem kraj Ljubljana in kliknem iskanje. Potem mi ta query izpiše samo zapise s poljem "Ljubljana".

Še kakšna ideja/rešitev?

8 odgovorov

seveda da ni mozno...no, ce bi imel ogromno kolicino spomina tako na serverju kot na svoji masini, potem ja... je pa tudi omejitev pri php skriptah, max 128M za izvajanje... tako da tudi ce bi to zelel, bi mogu izpisovati po batchih, nekaj tisoc rekordov naenkrat v spominu za zanko....

torej pusti ti tiso iskanje on the fly, ki seveda ni mozno uporabiti v tvojem primeru...

priporocam izpis po straneh... iskanje pa naredi po bazi in ne v live html tabeli...veliko hitrje in bolj smotrno, predvsem pri veliki kolicini pdoatkov

ne pozabi postaviti indexov v mysql tabeli na polja, kjer opravljas iskanje

1

Za prikaz celotne baze enostavno uporabi paging, za soltiranje pa kak jquery live ajax request.

1

Dodal bi še, da pri SELECTu izberi samo polja, ki se bodo prikazovala, ne SELECT *.

2

Ja, sem se bal da bo tako. Dobro, nič ne de, bo pač iskanje po bazi.
Moram še malo pogledati tale paging, ker kot rečeno nisem programer in to prvič vidim. Bom malo naštudiral, ker ni videti nič težkega.

@pavarti To bom, ker nekaj polj ne bom prikazoval. Je tudi sicer kakšna razlika, če bi hotel prikazati vsa polja, de ne uporabim SELECT *?

Sicer pa hvala vsem. Sedi, +. :)

Tukaj je enostavna logika.

Več podatkov zahtevaš, več resourcev porabiš (časa pozivedve, prenos podatkov med mysql in php, memorija ...).

Ampak mislim da najprej podpri paging, s tem boš gotovo rešil težavo.

Kaj pa mogoce kak ajax loading ob scrollanju. Pa da izpisuje po 1000 vrstic na enkrat.

zeko:
Kaj pa mogoce kak ajax loading ob scrollanju. Pa da izpisuje po 1000 vrstic na enkrat.

To bi jaz odsvetoval. Če je vrstic preveč bo trpela memorija brskalnika, v najslabšem primeru se lahko brskalnik tudi sesuje, v kolikor ima uporabnik malo rama.

seveda je odvisno od DOM elementov...

ce se gre za simple table row, z nekaj stolpci in navadnimi tekstovnimi podatki notri, jih je komot na strani od 500-1000, tudi vec