konto usunięte
Temat: W jaki sposób limitujecie wyniki w stronicowaniu?
Temat założony raczej z ciekawości.
$query1 = mysql_query('SELECT * FROM `tabela` ORDER BY `order` LIMIT x, x;');
To zapytanie oczywiście zwróci mi pewną ilość wyników na podstawie zmiennych limitowych,
ale nie uzyskam po jego wykonaniu informacji, ile jest wszystkich rekordów w tabeli, by móc obliczyć ilość podstron do wygenerowania dla stronicowania.
Możliwości są z reguły dwie, albo podwójne wykonanie zapytania, najpierw COUNT(), który zwróci ilość wszystkich wyników, a później drugie zapytanie z limitami już dla wyświetlania danych.
Sposób drugi, to wybieranie SELECT'em wszystkich rekordów, pobieranie ich ilości poprzez mysql_num_rows() i odpowiednie obcinanie całej tabeli wyników na podstawie zmiennej aktualnej strony, lecz to rozwiązanie przy ogromnej ilości rekordów będzie mega nieoptymalne.
A jak Wy to robicie? Stosujecie jakieś cache'owanie, czy może jeszcze inne metody?
p.s. temat dotyczy czystego kodu PHP, bez dotatkowych modułów typu Paginator, czy frameworków.
edit:
wywołanie w stylu
SELECT COUNT(....) AS zmienna, tabela.a, tabela.b, tabela.c. .........
się nie liczy , chcę zastosować SELECT * ! ;-)Jakub Świegot edytował(a) ten post dnia 07.09.12 o godzinie 08:53