[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL (Кол-во найденных результатов)
Семён
Бьюсь уже с SQL некоторое кол-во времени и дней.
(уже замучал глока дурацкими вопросами)

У меня возник вопрос к знатокам, как наиболее быстро получить кол-во всех найденных результатов к примеру вот для такого запроса.

Есть варианты:
            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 = общее_значение)
Наиболее быстрым способом

Спустя 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 тыс. это нормальный показатель?

Спустя 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 написал(а):
Если считаемая таблица меняется часто, то кешируйте результат где-нибудь, если меняется редко, то и так результат из кеша будет браться при повторных запросах. Надо делать оптимизацию сообразно задачам.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.