Уважаемые гуру SQL программирования, помогите оптимизировать или переписать запрос к БД.
Собственно имеем:
1. Таблицу индексов:
2. Поисковый запрос:
Впринципе поиск работает и находит так как надо (слова должны встретиться в одном документе, в одном разделе и в одном параграфе(абзаце)).
Но смущает
Собственно имеем:
1. Таблицу индексов:
CREATE TABLE [Index-01] ( Document varchar(255), Word varchar(255), Section int, Paragraph int, Indx int )
2. Поисковый запрос:
Тест* или проверка поиска3. Ну и собственно сам запрос на поиск в таблице индексов по поисковому запросу:
SELECT * FROM [Index-01] WHERE Word='поиска' and Document in (select document from [index-01] where word like 'тест%' and section in (select section from [index-01] where word like 'тест%' and Paragraph in (select Paragraph from [index-01] where word like 'тест%' and Document in (select document from [index-01] where word = 'проверка' and section in (select section from [index-01] where word = 'проверка' and Paragraph in (select Paragraph from [index-01] where word = 'проверка'
Впринципе поиск работает и находит так как надо (слова должны встретиться в одном документе, в одном разделе и в одном параграфе(абзаце)).
Но смущает
IN SELECTи сразу понятно что очень не оптимизирован запрос, а также не учитывается порядок следования слов.