SQL_CALC_FOUND_ROWS
je užitečné pouze v případě, že používáte LIMIT
klauzule, ale přesto chcete vědět, kolik řádků by bylo nalezeno bez LIMIT
.
Představte si, jak to funguje:
SELECT SQL_CALC_FOUND_ROWS * FROM Users;
Nutíte databázi, aby načetla/analyzovala VŠECHNA data v tabulce, a pak ji vyhodíte. I když se nechystáte načíst žádný z řádků, DB server přesto začne stahovat skutečná data z disku za předpokladu, že je budete chtít.
Lidsky řečeno, koupili jste celý obsah super obchodu s potravinami, ale vyhodili jste všechno kromě balíčku žvýkaček ze stánku u pokladny.
Vzhledem k tomu, že:
SELECT count(*) FROM users;
umožňuje enginu DB vědět, že i když chcete vědět, kolik řádků existuje, o skutečná data vám může být jedno. Na většině všech inteligentních DBMS může modul načíst tento počet z metadat tabulky nebo jednoduše projít indexem primárního klíče tabulky, aniž by se kdy dotkl dat řádku na disku.