Katalógus: előszűrés
Sziasztok!
Ötleteket keresek a következő feladat optimális megvalósításához. Egy katalógus termékeinek listázása előtt a kereső feltételinek változtatásával kiírni a feltételeknek megfelelő találatok darabszámát.
Egyszerűen csak futtassam le kétszer az sql-t?
Vagy mentsek minden egyes keresési kombinációt eredményét és abból kérjem a találatok darabszámát? Új termék felvitelénél újra el kéne végezzem.
Az is probléma, hogy naponta változhatnak a termékek.
Kösz.
■ Ötleteket keresek a következő feladat optimális megvalósításához. Egy katalógus termékeinek listázása előtt a kereső feltételinek változtatásával kiírni a feltételeknek megfelelő találatok darabszámát.
Egyszerűen csak futtassam le kétszer az sql-t?
Vagy mentsek minden egyes keresési kombinációt eredményét és abból kérjem a találatok darabszámát? Új termék felvitelénél újra el kéne végezzem.
Az is probléma, hogy naponta változhatnak a termékek.
Kösz.
Solr
MySQL-ben a SELECT-nek van
SELECT SQL_CALC_FOUND_ROWS mezo1, mezo2 FROM ... LIMIT 20,30
Korábban hasonló problémával küzdöttünk, mint te, optimalizálnunk kellett a kódot, és az derült ki, hogy gyorsabb lefuttatni kétszer ugyanazt a lekérdezést (pontosabban az első SELECT COUNT(index_mezo) FROM legyen), mint ezt a SQL_CALC_FOUND_ROWS-osat egyszer.
Ha jól értem a kérdést, akkor
Kissé eltúlozva: ha percekig fut a lekérdezésed és visszaad ötven sort, akkor elég egyértelmű, hogy temporális táblába v. memóriába mentem és onnan szolgáltatok információt.
Ha ugyanez visszaadja az eredeti tábla tartalmának 90%-át akkor úgyis mindegy, memóriába nem fér be, temporális táblába írni meg csak tovább lassít.
Szóval én arra szavaznék, hogy erősen függ a dolog az adatbázisod szerkezetétől és méretétől is.
De még1x, okulva a korábbiakon: _HA_ jól értem. :-)
Kösz a tippeket. Egyelőre a