Jak łatwo zabić MySQLa – uważaj z SQL_CALC_FOUND_ROWS!

Jak łatwo zabić MySQLa – uważaj z SQL_CALC_FOUND_ROWS!

Jak łatwo zabić serwer bazodanowy?

  1. Przygotuj dwie tabele z dużą ilością rekordów (liczonych w setkach tysięcy przynajmniej).
  2. Poczytaj porady o implementacji stronicowania z użyciem mysqla i funkcji FOUND_ROWS(), gdzie potrzebujesz zawsze dokonać selekcji wszystkich danych z danej tabeli, żeby potem zwrócić ich ilość.
  3. Wykonaj zapytanie:
  4. Obserwuj jak tworzy się ogromna tabela tymczasowa, mimo że potrzebujesz tylko 50 najnowszych rekordów z jednej tabeli połączonych z inną:)!

Jak zrobić to samo i nie zabić serwera?

Użyj sub-queries. A rekordy pod stronicowanie zlicz funkcją COUNT np tak:

 

Dodaj komentarz

avatar