sql >> Databáze >  >> RDS >> Mysql

Získat celkový počet řádků při použití LIMIT?

Naštěstí od MySQL 4.0.0 můžete použít SQL_CALC_FOUND_ROWS možnost ve vašem dotazu, která řekne MySQL, aby spočítala celkový počet řádků bez ohledu na LIMIT doložka. Stále musíte provést druhý dotaz, abyste získali počet řádků, ale je to jednoduchý dotaz a není tak složitý jako váš dotaz, který načetl data. Použití je docela jednoduché. V hlavním dotazu musíte přidat SQL_CALC_FOUND_ROWS možnost hned za SELECT a ve druhém dotazu musíte použít FOUND_ROWS() funkce pro získání celkového počtu řádků. Dotazy by vypadaly takto:

SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

SELECT FOUND_ROWS();

Jediným omezením je, že musíte volat druhý dotaz ihned po prvním, protože SQL_CALC_FOUND_ROWS nikde neukládá počet řádků. Přestože toto řešení také vyžaduje dva dotazy, je mnohem rychlejší, protože hlavní dotaz provedete pouze jednou. Můžete si přečíst více o SQL_CALC_FOUND_ROWS a FOUND_ROWS() v dokumentech MySQL.

UPRAVIT: Měli byste si uvědomit, že ve většině případů je dvojité spuštění dotazu ve skutečnosti rychlejší než SQL_CALC_FOUND_ROWS . viz zde

ÚPRAVY 2019:

Modifikátor dotazu SQL_CALC_FOUND_ROWS a doprovodná funkce FOUND_ROWS() jsou od verze MySQL 8.0.17 zastaralé a v budoucí verzi MySQL budou odstraněny.

https://dev.mysql.com /doc/refman/8.0/cs/information-functions.html#function_found-rows

Doporučuje se použít COUNT místo

SELECT * FROM tbl_name WHERE id > 100 LIMIT 10;
SELECT COUNT(*) WHERE id > 100;



  1. Co zkontrolovat, zda je využití I/O MySQL vysoké

  2. Seznam specifikátorů formátu data MySQL

  3. V existující tabulce napiš první písmeno každého slova na velké

  4. PostgreSQL 13:Nenechte sloty zabít vašeho primárního