Задавайте вопросы, мы ответим
Вы не зашли.
Всем добрый день. У меня в проекте есть 1 таблица, с которой я работаю. После изменений в логике, пришлось переделать 2 запроса, и они стали жутко долго выполняться.
Собственно лучше сразу в код:
сама таблица
Неактивен
Я такие запросы в голове удержать не могу
EXPLAIN от них покажите, пожалуйста.
Неактивен
В архиве оба explain'a.
Меня смущают подзапросы. Из-за них скорее всего идёт основное замедление
Неактивен
bug
Неактивен
Не вижу ни архива, ни бага
Неактивен
не отправляется архив со скринами
Неактивен
Кошмаар Давайте итеративно, я всё равно в голове это не удержу.
Подзапросу нужно, чтобы Вы поменяли INDEX chataudit_event_type на
(eventType, operator, lastUpdate). Ну и для второго запроса нужен будет
(eventType, lastUpdate).
P.S. Да, и возьмите клиент, из которого Вы можете копировать текстом
результат работы. Грузить картинки в раре — грустно.
Неактивен
Выгрузил в html в архиве:
Неактивен
Как отобрать сумму в подзапросе, чтобы не работать со всей таблицей(на это времени много уходит)?
я про вот эти 2 кусочка:
Неактивен
Кошмар. Я имел в виду не сжатый HTML, а нормальный клиент. Ну, вот, например:
mysql> EXPLAIN SELECT 1; +----+-------------+-------+------+---------------+------+---------+------+------+----------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+----------------+ | 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used | +----+-------------+-------+------+---------------+------+---------+------+------+----------------+ 1 row in set (0.00 sec)
Правда — это и читать просто, и на форум легко влезает. Стандартный консольный
клиент mysql это умеет.
Индексы то сделали?
Неактивен
Разобрался, только на экран не помещается
1:
Неактивен
а с индексами что сделать? Выбрать другое поле для объединения?
Просто у меня проиндексированы почти все поля
Неактивен
http://sqlinfo.ru/forum/viewtopic.php?pid=21796#p21796
Нужно сделать то, что написано во втором абзаце.
Неактивен
у меня же объединяются через индексное поле. Проблема в том, что я через поле eventType и делаю объединение
Если не совсем понятно, я могу описать, что должны делать запросы
Неактивен
Представьте, что перед Вами — большой склад. На нем хранятся разнообразные
товары. Перед вами есть две большие книги, одна содержит соотношение имен
компаний с номерами полок на складе (например, по ней Вы можете быстро опре-
делить, что продукция компании procter-and-gamble содержится на полках с пяти-
сотой до пятисотсемнадцатой). Вторая книга содержит соотношение товаров на
полках (например, мыло лежит на 17, 19, ... полках). Вам нужно найти мыло ком-
пании procter-and-gamble. Да, не смотря на две книги, Вам прийдется идти и тол-
каться на полках, чтобы найти там мыло.
Я же предлагаю Вам сделать книгу, в которой будет написано «Procter-and-gamble:
зубные пасты — полка 500, мыло — полка 501, ...». Чувствуете величие двойного
индекса?
Неактивен
Да чувствую!!
Благодарю за наглядное объяснение
т.е. надо добавить в 1 индекс 2 поля и получится двойной индекс
Неактивен
А что может мешать построению индекса в таблице?(2 500 000 записей уже)
Выбрал время минимальной нагрузки, когда пытался построить - он строился у меня около часа - потом я отменил операцию. Пробую на тестовой таблице.
Неактивен
Большой объем данных требует большого времени построения
индекса — тут уж ничего не поделаешь. innodb_buffer_pool_size
достаточный у Вас стоит?
Неактивен
достаточный - это сколько
Его можно рассчитать?
Неактивен
Рассчитать — практически никак. Какая версия MySQL? В 5.1 + InnoDB Plugin
создание неуникальных индексов происходит гораздо быстрее (в десятки
раз) за счет того, что переделывается не вся таблица, а только этот индекс.
Неактивен
Версия 5.089
Неактивен
построился индекс и запросы пополз быстрее!!! ))
Неактивен
5.0 уже достаточно устарела, подумайте над тем, чтобы обновиться хотя бы
до 5.1. 5.5 вышел и правда еще не достаточно давно, чтобы кидаться на него,
но смотреть на него всё равно уже стоит.
Неактивен
Благодарю. Запросы выполняются терпимее. По синтаксису можно какие-то улучшения применить?
мы переезжаем на этой неделе на новый сервер с версией 5.5 ))!!
Думаю работать ещё быстрее будет.
и ещё:
не подскажете как использовать динамический запрос для курсора в хранимке?(есть идея выполнить запрос и записать во временную таблицу, только удалиться ли она при разрыве связи.). Или для этого новый топик открыть стоит.
Неактивен
Честно говоря, не понял вопроса.
Курсоры в MySQL работают только для чтения. Временные таблицы рабо-
тают нормально, удалится при разрыве соединения, да.
Неактивен