Loading:

Książka Zend Framework 3. Poradnik Programisty.

Zwracanie liczby wierszy w MySQL - SQL_CALC_FOUND_ROWS

SQL_CALC_FOUND_ROWS (parametr dostępny od wersji 4.0.0 MySQL-a) wymusza policzenie ilości wszystkich wierszy zapytania (lekceważąc ewentualną opcję LIMIT.

 

Liczba znalezionych wierszy może być później użyta do w funkcji SELECT FOUND_ROWS() i wykorzystana do yzyskania tych wierszy.


UWAGA: Ta Funkcja jest 40 krotnie mniej optymalna niż COUNT(*):

 

Listing 1.0 ukazuje porównanie SQL_CALC_FOUND_ROWS a COUNT(*)

 




Napisz Artykuł

Listing

--Listing 1.0
--Tabele posiadają dodana operację: ALTER TABLE users ADD INDEX IBirthDate (BirthDate)
--Kod SQL_CALC_FOUND_ROWS

SELECT SQL_CALC_FOUND_ROWS SQL_NO_CACHE * FROM uzytkownicy WHERE DataUrodzenia > '1984-01-01 00:00:00' ORDER BY DataUrodzenia LIMIT 100;


SELECT SQL_NO_CACHE FOUND_ROWS() AS ROWS;
--wynik: ~28s

--Kod COUNT(*)

SELECT SQL_NO_CACHE * FROM uzytkownicy WHERE DataUrodzenia > '1984-01-01 00:00:00' ORDER BY DataUrodzenia LIMIT 100;
SELECT SQL_NO_CACHE  count(*) FROM uzytkownicy WHERE DataUrodzenia > '1984-01-01 00:00:00';
--wynik: ~0,7s


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=5131

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: divix
Ranga: Administrator serwisu Punktów: 37169
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors