Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
Привет всем! У меня очень острая проблема. Есть таблица s2_words (индекс слов) и s2_index (размещение слов по документам). Как мне организовать пересечение документов (логику "И" между словами поисковой строки)? --ОЧЕНЬ СРОЧНО!!! Я это сделал примерно так: select bk_id from s2_words w inner join s2_index i on w.wrd_id = s.wrd_id GROUP BY bk_id HAVING count(*) = @wordscount В таблице s2_index всего 7,5 млн записей. Выполняется около минуты. Нельзя ли сделать это другим способом (более быстро)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2002, 09:17 |
|
||
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
А где здесь поисковая строка? Похоже, этот запрос просто вернет все документы, в которых встречается @wordscount любых слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2002, 10:18 |
|
||
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
Я тебя понял так: Есть некий набор слов и необходимо найти документы в которых встречаются ВСЕ указанные слова. Ну так прямо и пиши: SELECT i.bk_id FROM s2_index i WHERE i.wrd_id IN (SELECT wrd_id FROM s2_words WHERE s2_words.words='СЛОВО1') AND i.wrd_id IN (SELECT wrd_id FROM s2_words WHERE s2_words.words='СЛОВО2') AND i.wrd_id IN (SELECT wrd_id FROM s2_words WHERE s2_words.words='СЛОВО3') AND ... Конечно, это не идеал, но кажется здесь в конфе уже обсуждался вопрос выборки значений, когда надо отобрать записи принимающие ВСЕ заданные значения из набора. Полистай, может найдешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2002, 13:28 |
|
||
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
Слова поисковой строки находятся в таблице s2_words. На самом деле это - временная таблица, как вы понимаете. Кроме самих слов в ней находятся соответствующие им идентификаторы, по которым осуществляется связь с индексом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2002, 14:18 |
|
||
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
К сожалению, Владимир, этот путь хорош, если уже известен набор слов, их количество. Можно также использовать динамический SQL, только по вполне понятным причинам я специально ушел от этой практики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2002, 14:21 |
|
||
|
Срочно! Помогите с запросом!!!
|
|||
|---|---|---|---|
|
#18+
Я не уверен, что это будет лучше (посмотри по планировщику), однако, попробуй такой вариант: SELECT bk_id FROM s2_index WHERE wrd_id IN (SELECT wrd_id FROM s2_words) GROUP BY bk_id HAVING count(*) = @wordscount Глупо спрашивать, но надеюсь индекс по полю s2_index.wrd_id существует ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2002, 06:40 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32030633&tid=1822680]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 385ms |

| 0 / 0 |
