Не используйте SQL_CALC_FOUND_ROWS и FOUND_ROWS ()
есть сообщения об ошибках
здесь: https://bugs.mysql.com/bug.php?id=18454
и здесь: https://bugs.mysql.com/bug.php?id=19553
в то время как для небольших таблиц BENCHMARK больше зависит от других вещей, и время, которое ваш SELECT займет, будет примерно таким же, как COUNT (0) - SQL_CALC_FOUND_ROWS по-прежнему накладывает ограничения на оптимизацию базы данных LIMIT и ORDER BY, поэтому если зависеть от них не использовать SQL_CALC_FOUND_ROWS
для больших таблиц разница BENCHMARK становится огромной, когда COUNT (0) может занять 0,003 секунды, тогда как SQL_CALC_FOUND_ROWS теперь может занимать 20 секунд
По всем метрикам COUNT (0) - лучший выбор
COUNT (0) SYNTAX:
(SELECT COUNT(0) FROM tableNames WHERE condition) AS alias
// alias is optional but needed if you need to use the result later
Итак, ваш общий запрос будет выглядеть так
(SELECT COUNT(0) FROM my_table WHERE name LIKE '%prashant%') AS countResults;
SELECT Id, Name FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;
А потом просто вызывайте countResults, где бы вам ни понадобилось ...
Еще одним преимуществом использования COUNT (0) является то, что вы можете использовать его для поиска в той же таблице, что и здесь, или вы можете использовать его для поиска в другой таблице ...
Так, например, если у каждого найденного человека есть 3, 2, 1, 5 разных заданий соответственно ... вы можете просто добавить
(SELECT COUNT(0) FROM my_jobs_table WHERE name = name_row_in_jobs_table) AS jobs
внутри вашего оригинального SELECT вот так
SELECT Id, Name (SELECT COUNT(0) FROM my_jobs_table WHERE name = name_row_in_jobs_table) AS jobs FROM my_table WHERE Name LIKE '%prashant%' LIMIT 0, 10;
Даю вам:
--------------------
| id | Name | jobs |
--------------------
| 1 | Alice| 3 |
--------------------
| 2 | John | 2 |
--------------------
| 3 | Bob | 1 |
--------------------
| 4 | Jill | 5 |
--------------------
Таким образом, показывая имя [3] (т. Е. Боба), вы также можете показать, что у Боба есть 1 задание, вызвав задание [3] ...