MySQL →  Mysql кто быстрее и кто лучше?

Делал пейджинг и столкнулся с такой проблемой. Необходимо было выбирать записи с лимитом и узнавать количество записей без лимита, для того что бы высчитывать потом количество страниц.
Мнения разошлись в с сторону выполенения дополнительного запроса count(*), например,

SELECT * FROM tbl_name WHERE id > 100 LIMIT 0, 10;
SELECT count(*) FROM tbl_name WHERE id > 100;

и доп запроса на определение количества строк без каунта, например,

SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name id > 100 LIMIT 0, 10;
SELECT FOUND_ROWS();

Первый способ работает быстрее, несмотря на то, что во втором способе при втором запросе обращения к БД не происходит, но я остановился на втором, т.к.

1. Нет необходимости следить за двумя запросами одновременно. Когда запросы обрастают условиями, становится очень геморно следить за ними двумя.
2. Опять же, первый способ работает быстрее при простых запросах, а если там будет 3-5 джойнов и куча условий?
1


Вставка изображения
Файл:
Ссылка:
Выравнивание:
Описание:
комментарии(4): 
qubit 10 декабря 2008, 13:47 #
0 
Надо было попробовать на миллионе записей сравнить. Может тогда результаты друге бы были
dvinograd 16 декабря 2008, 16:04 #
0 
Мне второй вариант тож больше по душе, но приходиться пользоваться первым изза smartypager — а :((((
igorok 22 декабря 2008, 16:11 #
0 
а что такое smartypager?:)) и почему это ему нужно именно два отдельных запроса?
ekimoff 28 ноября 2009, 12:53 #
0 
Использую второй вариант, так как мне важнее краткость и красота кода. Краткость достигается, когда сам запрос довольно большой (он фактически будет продублирован в первом случае, в запросе count()).

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.