Задавайте вопросы, мы ответим
Вы не зашли.
есть таблица table, в ней 12 записей, делаю такой запрос:
SELECT * FROM table WHERE `field` = 1 ORDER BY `id` desc LIMIT 0, 10
time: 0.02206
остальные: 0.00100-0.00500.
из-за чего так много?
спасибо
Неактивен
Создайте составной ключ ALTER TABLE `table` ADD KEY(field,id);
Неактивен
а еще вопрос, как в настройках mysql выключить кэширование полностью, чтобы определить какие запросы медленнее всего...потому что второй запуск этого запроса уже за нормальное время выполняется.
Неактивен
не обязательно отключать, выполняйте SELECT SQL_NO_CACHE ....
Неактивен
хотелось бы отключить всю оптимизацию и кэширование.
Неактивен
Кэширование (для MyISAM) можно отключить так. В my.cnf прописать:
query_cache_size=0
key_buffer_size=0
и перезапустить mysqld
Неактивен
спасибо еще
таблица blog, в ней 5713 записей, запрос
SELECT COUNT(*) as `num_rows` FROM `blog` WHERE `article_active` = '1'
время: 0.02213
понимаю что конечно таблица не очень маленькая, и это не сервер на нетбук, но все равно многовато.
как можно ускорить запрос?
p.s. ещё есть вариант использовать доп таблицу в которой хранить количество записей, а кроме этого можно как нибудь?
спасибо
p.s.s. может вы знаете как обычно называются такие таблицы?
Отредактированно vvsh (28.07.2011 04:53:21)
Неактивен
Можно попробовать добавить индекс на `article_active`, а затем считать отдельно count(*) и count(*) WHERE `article_active`=0; Кстати, нужно убрать кавычки вокруг числа 1, иначе лишняя конвертация.
P.S. хранение избыточной информации обычно называется денормализацией БД. В вашем случае можно назвать статистической таблицей.
Неактивен
а если в таблице будет 100 тысяч записей то запрос будет выполнятся достаточно долго, если уже при 5500+ такое время.
Неактивен
Если неактивных статей мало, то предложенная мной схема будет работать нормально
Неактивен
а что в Вашем понятии значит неактивных?
Неактивен
Если есть индекс на `article_active` и используется MyISAM, то запрос
Неактивен