powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите! OR - как убийца запроса
4 сообщений из 4, страница 1 из 1
Помогите! OR - как убийца запроса
    #38331377
Vladimit04
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Имеется запрос:

Код: sql
1.
select a.name,b.name from items a, items b where a.id = 1 or b.id = 1;


Выполняется он так долго, что даже прождав час я не смог получить результата. Если изменить OR на AND, то запрос выполнится мгновенно. Не могу никак определить почему же с OR он виснет?

Эксплейн запроса:
Код: sql
1.
2.
3.
4.
5.
6.
+----+-------------+-------+------+---------------+------+---------+------+-------+--------------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows  | Extra                          |
+----+-------------+-------+------+---------------+------+---------+------+-------+--------------------------------+
|  1 | SIMPLE      | a     | ALL  | PRIMARY       | NULL | NULL    | NULL | 23914 |                                |
|  1 | SIMPLE      | b     | ALL  | PRIMARY       | NULL | NULL    | NULL | 23914 | Using where; Using join buffer |
+----+-------------+-------+------+---------------+------+---------+------+-------+--------------------------------+
...
Рейтинг: 0 / 0
Помогите! OR - как убийца запроса
    #38331397
qwerty112
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vladimit04Выполняется он так долго, что даже прождав час я не смог получить результата. Если изменить OR на AND, то запрос выполнится мгновенно. Не могу никак определить почему же с OR он виснет?
потому, что с OR - это декартовое произведение 100500 записей из a на 1-ну запись из b
+ декартовое произведение 100500 записей из b на 1-ну запись из a

c AND - это декартовое произведение 1-ой записи из a на 1-ну запись из b

---
а вопрос - из "спортивного интиреса" или у запроса есть какая-то "вменяемая" постановка ?
...
Рейтинг: 0 / 0
Помогите! OR - как убийца запроса
    #38331419
Vladimit04
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно. Значит проблема в сложности запроса, вот он и зависает. Спасибо.
...
Рейтинг: 0 / 0
Помогите! OR - как убийца запроса
    #38331444
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimit04,

нет. Проблема в несвязанности таблиц промеж себя и отсутствии индексов. Вам точно нужны:

"все 100500 имен из А для одного Б" И "все 100500 имен из Б для одного А"?

ХШ подсказывает что нужно что-то другое... мож в сторону union посмотреть...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите! OR - как убийца запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]