![]() |
|
Модераторы: skyboy |
![]()
|
|
| 1programmist |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.12.2009 Репутация: нет Всего: нет |
Добрый день,
Столкнулся с проблемой, что mysql меняет порядок условий в WHERE. Есть база:
Выполняем запрос:
Видим следующее ![]() Uploaded with ImageShack.us Т.е. всё по индексам проходит, всё ОК. Выполняем запрос и смотрим как mysql его преобразовывает
MySQL отдает, и собственно пытается выполнить, вот такой запрос:
Как видим MySQL поменял очередность условий в WHERE (1 и 2 условие), что не очень хорошо сказывается на больших объемах данных. Пробовал в запросе в WHERE брать условия в скобки () чтобы указать очередность, но толку нет, всё равно MySQL именно так преобразовывает. Что делать? |
||||||||
|
|||||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Он поступает совершенно логично. Ну разве что убрать условие c.cid = 2 в подзапрос... что мне кажется малосмысленным... или создать индекс con(cid, id) и попробовать его зафорсить. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| 1programmist |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.12.2009 Репутация: нет Всего: нет |
Что-то логики я никакой не вижу, в таблице "с" 60млн записей, в таблице "h" около миллиарда. Что лучше, сначала связать таблицы и потом выбрать из них 20 записей или же наоборот? |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Это ты знаешь селективность построенных тобой условий. И то потому, что уже получал результаты этого запроса. А сервер этой селективности не знает, посему поступает так, как В БОЛЬШИНСТВЕ СЛУЧАЕВ будет оптимально. Поскольку твои условия делают запрос "несреднестатистическим" - будь любезен подсказать серверу, как делать В ДАННОМ КОНКРЕТНОМ СЛУЧАЕ. Как - я уже предложил пару вариантов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| 1programmist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.12.2009 Репутация: нет Всего: нет |
||||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
А ты ничего и не сделал. И эта... текстовые цитаты с консоли лучше мелкоскопных скриншотов. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| 1programmist |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 22.12.2009 Репутация: нет Всего: нет |
ну вообще-то вынес условие выше. Но опять же, я не прошу написать мне запрос, я прошу направить меня по правильному пути, чтобы решить проблему |
|||
|
||||
| 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. |