![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Друзья, помогите оптимизировать запрос:
Вот EXPLAIN:
Для меня EXPLAIN - китайская грамота, если честно. Единственное, за что уцепился взгляд - Using temporary; Using filesort. -------------------- ![]() |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
1) Зачем вообще используете в источнике таблицу docs? из неё ничего не выбирается, через неё ничего не джойнится.
2) зачем джойнится эта дикая конструкция:
? какая в ней великая мысль? Вообще мне кажется, что ты писАл запрос "влоб", потому и монстр получился. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
По поводу таблицы docs - согласен. Осталось от того, что было изначально (там еще доп.параметры собирались, после исключил их). А по поводу users и users_docs - это необходимо, т.к. эти параметры определяют, какой пользователь какие документы может смотреть... -------------------- ![]() |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Ну так сделай по-человечески. Связи - в JOIN, фильтры - во WHERE. Если надо (а в данном случае это логично) - соедини эти таблицы в подзапросе. А у тебя часть тут, часть там...
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
aktuba |
|
||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Ок, переделал:
Но вопрос был немного в другом - как оптимизировать? -------------------- ![]() |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
Давайте начнем с такой глупости: Что заставляет вас думать, что запрос выполняется не оптимально? Это сообщение отредактировал(а) Zloxa - 27.11.2009, 21:09 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
Время его выполнения. До 1 секунды уходит... Поэтому и хотелось бы узнать - можно ли вообще оптимизировать запрос и если да, то как.
-------------------- ![]() |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
если разбить это на три взаимоисключающих условия и сделать union трех полученных запросов вместо использования этого громоздкого выражения, то, как мне кажется, получится перейти от using where к using index. наверное. конечно, можно было бы проэкспериментировать, имея на руках "облегченную" версию твоих таблиц. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
искать по индексу на неравенство нельзя. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
ясно. в любом случае, зря я про сферических коней разговор поддержал
![]() |
|||
|
||||
aktuba |
|
|||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: нет Всего: 38 |
С общего объема пользователей, запросов и т.д... Когда на сайте более 1млн. хитов в сутки - такие запросы здорово тормозят загрузку страницы =( Добавлено через 2 минуты и 34 секунды
Не думаю, что это сильно поможет, т.к. большинство документов имеют статус open. Можно конечно заменить u.status <> 'user' на u.status IN ('admin', 'moderator'), но сильно ли это поможет? -------------------- ![]() |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
в смысле, u.status = "open"?
будет использовать индекс, я считаюверю(раз нет реальных данных - не могу проверить, а раз не уверен на 100% - значит, это просто вера такая ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Эта фраза говорит о том, что тип поля - текст? или всё-таки энум? Кстати, поможет. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |