![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie mam pomysłu jak napisać pager.
Problem polega na tym, ze gdy skieruje zapytanie sql do bazy z klauzlą LIMIT np. 40, 70 to nie wiem ile tak naprawdę rekordów mam całej tabelce, a pod wyświetlonymi wynikami przydałoby się wypisać pokolei linki do kolejnych stron: 1,2,3,4,5 ale jak je moge wypisać skoro nie wiem ile rzeczywiście rekordów mam w tabelce? Moge wydobyć liczbe wierszy za pomocą drugiego zapytania SELECT COUNT(ID) FROM tablename ale to jest już kosztowna operacja... Bez liczby wszystkich wierszy nie moge wypisac na dole ile jest stron, z kolei zliczenie ich nie jest możliwe bez wybrania całosci. Moge zrobic SELECT na wszystkim bez LIMITu, i robić paging w php ale to mija się z celem. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 749 Pomógł: 37 Dołączył: 3.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
zysk, albo w pysk...
albo robisz zliczanie ile masz rekordów, albo nie określasz ile masz stron... -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Ze co??Po co ci link do wszystkich stron?Pomysql sobie jak bedziesz mial 100 stron jak to bedzie wygladalo daj tylko linki do poprzednia|nastepna i << pierwsza >> ostatnia
![]() -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nawet jesli dam poprzednia i nastepna a LIMIT bedzie mi zbieral po 50 to bede musial sprawdzac czy istnieje rekord LIMIT + 1 czyli 51 (na stosie wyników) i poprzedni czyli -1.
Pozatym duzo lepszy jest interfejs gdzie mozesz skakać nie tylko o 1 do prozdu i 1 do tyłu, na początek i na koniec. Pomysql sobie jak bedziesz mial 100 stron... Wyobrazam sobie wlasnie powyzsza sytuacje ze mam 100 stron i nawigacje: pierwszy, poprzedni, nastepny, ostatni i chce sie dostac na 50 strone ![]() 50 kliknięć, żeby ondlaezc interesujące mnie dane bezsens. A tak to mam np: <<<pierwsza <poprzednia ...11,12,13,14,15,16,17,18,19... nastepna> ostatnia>> Jak na google Ten post edytował Beynar 31.12.2007, 13:56:13 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Za bardzo się martwisz. Zapytanie z COUNT() jest dość wydajne i na pewno nie zabije Ci bazy.
Kod mysql> select count(id) from lyrics; +-----------+ | count(id) | +-----------+ | 285797 | +-----------+ 1 row in set (0.00 sec) Myślę, że powyższy kod zamyka temat ;] Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 60 Pomógł: 1 Dołączył: 6.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Masz racje @Cysiaczek juz zanim przeczytalem Twojego posta doszedlem do tego samego
COUNT jest szybki, natomiast nigdy nie stosujcie w takich sytuacjach mysql_num_rows(mysql_query("SELECT * tylko po to by wydobyc ilosc wierszy SELECT * generuje zbiór wynikowy natomiast COUNT generuje tylko liczbe wierszy tak jak przedstawil to powyzej @Cysiaczek pzdr! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Jest jeszcze coś takiego jak SQL_CALC_FOUND_ROWS w zapytaniu select.
Całkiem niezłe... -------------------- Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
@normanos: ja robiłem testy na bazie dużo mniejszej, ale za to prawdziwej, a nie generowanej. I SQL_CALC_FOUND_ROWS było szybsze.
Zresztą wiele zależy od wersji MySQL. W starszych wersjach było dużo gorzej. Jednak z tego co wyczytałem w ticketach zostało to poprawione. -------------------- Michał Płachta
Warsztat: Mac OS X Leopard, PostgreSQL, Text Mate, Retrospectiva + SVN |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 627 Pomógł: 33 Dołączył: 1.05.2005 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
@seaquest: z benchmarkami jest już tak, że zawsze będą dyskusyjne. ale jest jeszcze coś przeciw sql_calc => niekompatybilność z innymi bazami.
-------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:39 |