У меня возник вопрос к знатокам, как наиболее быстро получить кол-во всех найденных результатов к примеру вот для такого запроса.
Есть варианты:
SELECT COUNT(*)
FROM prefix_table
WHERE item_id=12
Есть,
SQL_CALC_FOUND_ROWS
который помоему вообще работает очень медленно
И есть
mysql_num_rows
который по замерам работает у меня практически в 2-ва раза медленее.
Тестирование произведено на таблице в 250001 значений где, 250000 имеют item_id=12
Спустя 4 минуты, 29 секунд (24.08.2010 - 12:56) linker написал(а):
А взять собственно результат самого запроса, не, никак?
Спустя 11 минут, 59 секунд (24.08.2010 - 13:08) Семён написал(а):
Я может неправильно выразился.
Есть таблица test_table, как в ней определить общее кол-во предметов с общим параметром (т.е. пример WHERE item_id = общее_значение)
Наиболее быстрым способом
Есть таблица test_table, как в ней определить общее кол-во предметов с общим параметром (т.е. пример WHERE item_id = общее_значение)
Наиболее быстрым способом
Спустя 15 минут, 19 секунд (24.08.2010 - 13:23) linker написал(а):
$result = mysql_query("SELECT COUNT(*) FROM prefix_table WHERE item_id=12");
$count = mysql_result($result, 0);
echo $count;
Имхо куда быстрее?
Спустя 2 минуты, 57 секунд (24.08.2010 - 13:26) Семён написал(а):
У меня в первом посту написано тоже самое.
Т.е. по вашему 0.1с для выборки 250 тыс. это нормальный показатель?
Т.е. по вашему 0.1с для выборки 250 тыс. это нормальный показатель?
Спустя 23 минуты, 15 секунд (24.08.2010 - 13:49) Nikitian написал(а):
Индексы-то хоть покажите, так же explain вашего запросе тоже лишним не будет, а то это какое-то гадание на кофейной гуще получается.
Спустя 3 минуты, 14 секунд (24.08.2010 - 13:53) Семён написал(а):
Nikitian
В моей таблице для тестов это так:
В моей таблице для тестов это так:
Array
(
[0] => Array
(
[id] => 1
[select_type] => SIMPLE
[table] => mp_shop_comments
[type] => index
[possible_keys] => item_id
[key] => item_id
[key_len] => 5
[ref] =>
[rows] => 187502
[Extra] => Using where; Using index
)
)
Спустя 14 минут, 37 секунд (24.08.2010 - 14:07) linker написал(а):
Имхо, для MySQL - это нормальный результат.
Спустя 2 часа, 13 минут, 49 секунд (24.08.2010 - 16:21) Nikitian написал(а):
Если считаемая таблица меняется часто, то кешируйте результат где-нибудь, если меняется редко, то и так результат из кеша будет браться при повторных запросах. Надо делать оптимизацию сообразно задачам.