осторожно, SQL_CALC_FOUND_ROWS
Posted Jul.18, 2009 in Общая
Я всегда считал, что SQL_CALC_FOUND_ROWS – это круто.
Для тех, кто ещё не знает, что это – позволяет два запроса типа
“SELECT * FROM tbl WHERE somecondition LIMIT 100,10″,
“SELECT COUNT(*) FROM tbl WHERE somecondition”
выполнить в одном:
“SELECT SQL_CALC_FOUND_ROWS * FROM tbl WHERE somecondition LIMIT 100,10″
и затем вытащить количество найденных строк дополнительным запросом
“SELECT FOUND_ROWS()”.
Это очень удобно, и казалось, что очень эффективно (в моей голове не укладывалась мысль, что мускул может делать это хуже, чем втупую двумя запросами).
Оказывается, может.
Статья с Хабра, букв много, рекомендую глянуть сразу диаграмму результатов. Для тех кто не верит – более авторитетный источник на английском.
То есть, не так уж она хороша, эта удобная конструкция =(
