![]() |
|
Модераторы: skyboy |
![]()
|
|
| sanich_ |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 2.3.2008 Репутация: нет Всего: нет |
Добрый день.
Уже голову сломал, пытаясь сделать запрос быстрее: Запрос:
В таблице object 300000 записей Потеря времени происходит в месте where now()<o.date_del Если убрать, сравнение now()<o.date_del то запрос летает Пробовал сделать индекс по полю date_del, ничего не изменилось. Как его можно оптимизировать? Присоединённый файл ( Кол-во скачиваний: 5 )
план_запроса.gif 15,40 Kb |
|||
|
||||
| _zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1076 Регистрация: 21.8.2007 Репутация: 2 Всего: 12 |
А если индекс по 2 полям сделать ?
(o.date_del and o.id_rubrika) |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Только поля наоборот, по (id_rubrika,date_del).
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
1) вместо count -- SUM(IF(now()<o.date_del, 1, 0)
2) Если тупит вызов now() -- то [во-первых, перейти на 64-бит линукс, в котором это не требует сисколла через прерывания] сохранить now() до формирования запроса и поставить его как параметр. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
А вот это - фуллскан однозначно. И никакой индекс не спасёт - в лучшем случае это будет фуллскан индекса. Он не может тупить в принципе. Ибо выполняется ровно один раз, причём до начала выполнения самого запроса. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| sanich_ |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 2.3.2008 Репутация: нет Всего: нет |
Попробовал
Быстрее не стало... Добавлено @ 14:52
Индекс по двум полям добавил, быстрее не стало, план запроса прикладываю, что еще можно придумать? Это сообщение отредактировал(а) sanich_ - 16.12.2014, 14:54 Присоединённый файл ( Кол-во скачиваний: 5 )
план.gif 15,49 Kb |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Покажи итоговую SHOW CREATE TABLE object А не то же самое будет
? навскидку нарисовал... проверь. А исходный запрос с коррелирующим подзапросом я не вижу как ещё разогнать... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| sanich_ |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 145 Регистрация: 2.3.2008 Репутация: нет Всего: нет |
Запрос:
Выполняется чуть дольше.... |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Это неважно. Главное - я нигде логику не переврал? Если всё нормально - покажи его explain. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| tzirechnoy |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 3 Всего: 16 |
Ну, я там не указал, но now()<o.date_del надо было убрать. Что-то когда писал -- думал, что это какбы очевидно (да и @Akina это было очевидно). |
|||
|
||||
| _zorn_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1076 Регистрация: 21.8.2007 Репутация: 2 Всего: 12 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |