Должны ли методы доступа возвращать значения или постоянные ссылки?

IMHO, причина, по которой 2 запроса

SELECT * FROM count_test WHERE b = 666 ORDER BY c LIMIT 5;
SELECT count(*) FROM count_test WHERE b = 666;

быстрее, чем использование SQL_CALC_FOUND_ROWS

SELECT SQL_CALC_FOUND_ROWS * FROM count_test WHERE b = 555 ORDER BY c LIMIT 5;

, следует рассматривать как частный случай.

Это в фактах зависит от избирательности предложения WHERE по сравнению с селективностью неявного, эквивалентного ORDER + LIMIT.

Как сказал Arvids в комментарии ( http: //www.mysqlperformanceblog .com / 2007/08/28 / to-sql_calc_found_rows-or-not-to-sql_calc_found_rows / # comment-1174394 ), тот факт, что EXPLAIN использует или нет временную таблицу, должен быть хорошей базой для того, чтобы узнать, будет ли SCFR быстрее или нет.

Но, как я добавил ( http://www.mysqlperformanceblog.com/2007/08/28/to-sql_calc_found_rows-or-not- to-sql_calc_found_rows / # comment-8166482 ), результат действительно действительно зависит от случая. Для конкретного paginator вы можете прийти к выводу, что «для 3-х первых страниц используйте 2 запроса; для следующих страниц используйте SCFR "!

16
задан fredoverflow 6 January 2011 в 10:14
поделиться