Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Помогите составить запрос


Автор: DmitryTs 14.12.2007, 19:08
Есть массив значений из которого я составляю такой запрос:

Код

select * from pages where links like '%\'первый элемент первый\э% оr links like '%\'второй элемент первый\э%;

всё бы ничего только при большом размере массива получаются ужасающие запросы.. типа..

Код

select * from pages where links like '%\'1элемент первый\э% оr links like '%\'2элемент первый\э% оr links like '%\'3элемент первый\э% оr links like '%\'4элемент первый\э% оr links like '%\'5элемент первый\э% оr links like '%\'6элемент первый\э% оr links like '%\'7элемент первый\э% оr links like '%\'8элемент первый\э% оr links like '%\'9элемент первый\э% оr links like '%\'10элемент первый\э% оr links like '%\'11элемент первый\э% оr links like '%\'12элемент первый\э% оr links like '%\'13элемент первый\э% оr links like '%\'14элемент первый\э%


А можно ли как-то сократить это запрос чтоб каждый раз не писать or? К примеру как-то передать В like сразу несколько значений? 

M
skyboy
для форматирования программного кода пользуемся кнопкой "код"

Автор: Feldmarschall 14.12.2007, 19:28
Нет, нельзя.
Непонятно, почему беспокоит размер запроса. Ты его руками набиваешь, что ли? Какая разница - через or, или не через or?
по-моему, беспокоить должен не размер длины строки с запросом, а неоптимальность такого чудовищного количества like-ов

Автор: skyboy 14.12.2007, 20:04
Цитата(DmitryTs @  14.12.2007,  18:08 Найти цитируемый пост)
А можно ли как-то сократить это запрос чтоб каждый раз не писать or?

можно перейти к inner join'y на временную таблицу. с distinct'ом или group by для удаления дубликатов.
но это, пожалуй, ещё неоптимальнее, чем or'ы на like'ах. хотя, запрос, конечно, будет намного короче.
Цитата(Feldmarschall @  14.12.2007,  18:28 Найти цитируемый пост)
беспокоить должен не размер длины строки с запросом, а неоптимальность такого чудовищного количества like-ов

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)