Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Слишком много условий в запросе, надеюсь это не плохо! / 10 сообщений из 10, страница 1 из 1
11.04.2015, 13:34:08
    #38933782
zhurchick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
Здравствуйте Уважаемые форумчане.
Имеется запрос:
Код: sql
1.
SELECT * FROM users WHERE district = 5 AND ((village = 248 AND street = 777) OR (village = 249 AND (street = 251 OR street = 250 OR (street = 252 AND number = 400)))) LIMIT 10



В самой таблице users имеется составной индекс следующего характера:
Код: sql
1.
CREATE INDEX _district ON users(district, village, street, house);



Считается ли, по вашему мнения, данный запрос кривым? И нормально ли такие запросы вообще? Нормально ли они будут работать с 200 миллионами записей и выше?
...
Рейтинг: 0 / 0
11.04.2015, 15:13:56
    #38933818
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
zhurchickСчитается ли, по вашему мнения, данный запрос кривым?Да в общем-то нет.
zhurchickИ нормально ли такие запросы вообще??
zhurchickНормально ли они будут работать с 200 миллионами записей и выше?Проверьте на тестовых данных. И вообще мы пока не в курсе, по каким критериям вы определяете "нормальность" работы.
...
Рейтинг: 0 / 0
11.04.2015, 15:23:52
    #38933820
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
[quot zhurchick]Здравствуйте Уважаемые форумчане.
Имеется запрос:
Код: sql
1.
SELECT * FROM users WHERE district = 5 AND ((village = 248 AND street = 777) OR (village = 249 AND (street = 251 OR street = 250 OR (street = 252 AND number = 400)))) LIMIT 10



В самой таблице users имеется составной индекс следующего характера:
Код: sql
1.
CREATE INDEX _district ON users(district, village, street, house);



Считается ли, по вашему мнения, данный запрос кривым?


да, надо убрать скобки вокруг AND....


И нормально ли такие запросы вообще?

да, нормально.


Нормально ли они будут работать с 200 миллионами записей и выше?


вполне может быть.
зависит от данных.

у тебя из индекса

INDEX _district ON users(district, village, street, house);
используются для фильтрации только
поля

(district, village, street, )

если по этому условию все еще много записей хранится, могут быть проблемы.
...
Рейтинг: 0 / 0
11.04.2015, 15:25:37
    #38933822
zhurchick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
tanglir,

Просто я для себя хочу знать, подобные запросы нормально или же лучше искать другой способ решения задачи.

У меня еще такой к Вам вопрос. Ничего страшного, если скобочек окажется больше чем нужно? Ведь, по идеи, SQL сам удаляет то, что не нужно.

Нормально ли такой запрос (лишние скобки имеются):
Код: sql
1.
SELECT * FROM users WHERE district = 5 AND (((village) = 248 AND (street = 777)) OR ((((village = 249) AND (street = 251 OR street = 250 OR (((street = 252) AND number = 400))))))) LIMIT 10
...
Рейтинг: 0 / 0
11.04.2015, 15:28:51
    #38933825
zhurchick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
MasterZiv,

То-есть, насколько мне известно, можно использовать в запросе не все составные индексы, которые были заданы, а вот использовать поля которых нет в индексе - плохо, не так ли?
...
Рейтинг: 0 / 0
11.04.2015, 15:29:06
    #38933826
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
zhurchick,

Не морочьте голову лишними скобками себе и людям, они никакой роли не играют.
Лучше покажите план запроса.
...
Рейтинг: 0 / 0
11.04.2015, 15:48:01
    #38933833
zhurchick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
miksoft,

Дело в том, что запрос будет генерировать скрипт, а там все настолько сложно, что будут лишние скобки, вот и интересуюсь.

План запроса? Ну это и есть весь запрос, других полей не будет, просто текущих полей может быть больше или меньше (логика построения запросов такая как и описал в самом первом примере). Кстати, вместо поля number должно быть поле house, не заметил и поэтому не заменил.
...
Рейтинг: 0 / 0
11.04.2015, 15:54:30
    #38933834
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
zhurchickПлан запроса?добавьте слово EXPLAIN перд запросом и выполните его.
...
Рейтинг: 0 / 0
11.04.2015, 16:45:35
    #38933852
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
MasterZivда, надо убрать скобки вокруг AND....зачем? другой запрос же получится.
...
Рейтинг: 0 / 0
11.04.2015, 17:55:16
    #38933868
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Слишком много условий в запросе, надеюсь это не плохо!
Запрос будет использовать индекс плохо. Лучше три запроса и UNION.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Слишком много условий в запросе, надеюсь это не плохо! / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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