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

Имеется составной индекс, а именно:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE INDEX _district ON users(district, village, street, house);

-- Так вот, корректно ли я составил запрос?

mysqli_query("SELECT * FROM `users`
    WHERE
        (district = 1 AND village = 1 AND street = 1 AND house = 1)

        OR

        (district = 1 AND village = 1 AND street = 2 AND house = 2)        

    LINIT 30;");

-- Обратите внимание на то, что до OR в первой строчке и в последней district и village равны 1

-- Можно было бы написать запрос вот так:

mysqli_query("SELECT * FROM `users`
    WHERE
        district = 1 AND village = 1 AND ((street = 1 AND house = 1) OR (street = 2 AND house = 2))

    LINIT 30;");

-- Второй запрос короче, но меня волнует другое, имеется ли разница в производительности? Почему да или почему нет?
-- Дело в том, что скрипт генерирует строку запроса из JSON и генерирует её так как я описал в первом запросе.



Буду благодарен за любой совет!
...
Рейтинг: 0 / 0
Cоставной запрос и много AND и OR
    #38917441
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут форум по MySQL. И постить здесь PHP-код как минимум неправильно, для этого есть свой форум.

zhurchickимеется ли разница в производительности? Почему да или почему нет?
Первый запрос, возможно, сможет использовать индекс более эффективно, чем второй.

Ещё лучше будет запрос
Код: sql
1.
2.
3.
4.
(SELECT * FROM `users` WHERE district = 1 AND village = 1 AND street = 1 AND house = 1)
UNION ALL
(SELECT * FROM `users` WHERE district = 1 AND village = 1 AND street = 2 AND house = 2)
LIMIT 30



Однако следует заметить, что использование LIMIT без ORDER BY как правило есть глупо.
...
Рейтинг: 0 / 0
Cоставной запрос и много AND и OR
    #38917499
zhurchick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaОднако следует заметить, что использование LIMIT без ORDER BY как правило есть глупо.
Почему? Ведь по идеи, если будет найдено 30 соответствий, то выборка будет остановлена. Какой смысл в ORDER BY если он мне в данный момент не нужен?
...
Рейтинг: 0 / 0
Cоставной запрос и много AND и OR
    #38917516
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchick,
Потому что ты будешь получать случайный набор записей.
...
Рейтинг: 0 / 0
Cоставной запрос и много AND и OR
    #38917853
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhurchickесли будет найдено 30 соответствий, то выборка будет остановлена. Какой смысл в ORDER BY если он мне в данный момент не нужен?Потому что тебе неизвестно, в каком порядке сервер будет выбирать эти записи. А самое главное - в следующий раз сервер имеет полное право изменить этот порядок, и ты получишь на тот же самый запрос совсем другие записи.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Cоставной запрос и много AND и OR
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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