Вхождение хотя бы одного слова

Тема в разделе "Базы данных", создана пользователем Горбушка, 4 авг 2014.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.211
    Симпатии:
    2.240
    Имеется текстовое поле (varchar, text). В нём содержится довольно длинная строка. Необходимо вывести строки, в которых есть хотя бы 1 из перечисленных слов.
    Выборка разовая, OR не предлагать - слов дофига, полей тоже.

    MSSQL 2008.
    Время запроса в рамках разумного не ограничено.

    UPD 2014-08-06
    У меня есть sql studio - больше ничего юзать нельзя...
     
    Последнее редактирование модератором: 6 авг 2014
    Шумадан нравится это.
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    можна попробовать такую штуку

    ну или что-то более новое
     
    Горбушка нравится это.
  3. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.211
    Симпатии:
    2.240
    Сппсибо, но думал что-то примитивное есть... Уже через кучу OR и like сделал... Благо 32 ядра это не особо заметили...
     
    Шумадан нравится это.
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    SP - это самый сок и юзабельна везде, удобно и исполняется на сервере

    в том примере, что я дал, можно просто выдрать код с декларами и их менять когда нужно, сохранить как sql файл, подгружать и запускать запрос.
     
    Последнее редактирование модератором: 6 авг 2014
    Ctrogan и BaBL нравится это.
  5. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    149
    Симпатии:
    93
    Вариант полнотекстового поиска рассматриваете?

    Код:
    SELECT *
    FROM `messages`
    WHERE MATCH (message, title) AGAINST ('слово1 слово2 +слово3обязательно' IN BOOLEAN MODE);
    работает с FULLTEXT INDEX, очень быстро, * дают возможность использовать шаблоны, запрос на множество слов формируется тоже просто.

    С SP принято работать в T-SQL, PL, Oracle, в MySQL скорее вы их не найдете. В вебе они не прижились, не поддерживаются многими клиентами. Хотя сами по себе они хороши и поддерживаются, но есть "общепринятые" подходы и в частности в Веб, с текущими подходами к архитектурам, будет больше минусов от их использования. Вы MVC сломаете бизнес логикой в модели.

    Да, извиняюсь, проглядел про MSSQL. Тогда согласен, SP - хороший вариант.
     
    Последнее редактирование модератором: 6 авг 2014
    Шумадан нравится это.
  6. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.211
    Симпатии:
    2.240
    Поля не поддерживают полнотекстовый поиск. И причём тут MySQL, когда речь про MSSQL.
     
  7. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    у ТС MSSQL, с использованием SP в веб архитектурах и MVC не было особых проблем, иногда разные казусы бывают, но это в принципе не имеет отношения к топику
     
    Джуга и Ctrogan нравится это.
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.550
    Симпатии:
    1.436
    Есть ещё регулярки, которые должны отработать быстрее кучи LIKE ... OR
    Для MySQL это выглядит так (3 разных запроса для демонстрации) :
    PHP:
    SELECT 'Здесь много разных слов найти мы хотим' REGEXP "(слов|мы|хотим)";
    SELECT 'Мы ищем слова' REGEXP "(слов|мы|хотим)";
    SELECT 'А здесь нет ни одного нам необходимого' REGEXP "(слов|мы|хотим)";
    Адаптировать для MSSQL 2008, возможно поможет - http://www.ideaexcursion.com/2009/08/18/sql-server-regular-expression-clr-udf/
     
    Последнее редактирование: 6 авг 2014
    Горбушка и Шумадан нравится это.
  9. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.105
    в таком случае нужно компилировать С# библиотеку и подключатьк серваку. я думаю, что это будет немного медленнее, чем нативная СП
     
    Последнее редактирование модератором: 6 авг 2014
    Джуга и Ctrogan нравится это.
Статус темы:
Закрыта.