powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Informix [игнор отключен] [закрыт для гостей] / MULTI_INDEX с bts индексом
1 сообщений из 1, страница 1 из 1
MULTI_INDEX с bts индексом
    #39934758
tred04
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Informix 12.10
Basic Text Search bts.3.11

Есть ли какие-то варианты решения для использования MULTI_INDEX с bts индексом?

Из IBM doc: "The indexes must be B-tree indexes"

Описание проблемы:
SELECT count(*) news_id FROM warehouse1_data WHERE bts_contains(title, 'президент*' ) дает результат: 9616

План самого запроса (где требуется MULTI_INDEX):
EXPLAIN:
SELECT first 5 news_id FROM warehouse1_data WHERE newsdate BETWEEN cast('01.06.2004' as date) AND cast('02.06.2004' as date)
AND bts_contains(title, 'президент*' ) order by newsdate

Estimated Cost: 0
Estimated # of Rows Returned: 1
Temporary Files Required For: Order By

1) warehouse1_data: INDEX PATH

Filters: (warehouse1_data.newsdate >= 01.06.04 AND warehouse1_data.newsdate <= 02.06.04 )

(1) Index Name: wh1_idxctitle

VII Index Keys: title (Serial, fragments: ALL)

VII Index Filter: bts_contains(iwarehouse1_data.title,'президент*')

Internal name Table name
----------------------------
t1 warehouse1_data

type table rows_prod est_rows rows_scan time est_cost
-------------------------------------------------------------------
scan t1 17 1 9616 00:00.06 0

type rows_sort est_rows rows_cons time est_cost
------------------------------------------------------------
sort 5 1 17 00:00.06 0

Из отчета плана запроса следует, что индекс по дате не включается.

Если принудительно :
SELECT --+INDEX(warehouse1_data wh1_date)
news_id FROM warehouse1_data WHERE newsdate BETWEEN cast('01.06.2004' as date) AND cast('02.06.2004' as date) AND bts_contains(title, 'президент*' ) order by newsdate

Получаю: bts error - bts_contains requires an index on the search column

При более 2млн строк в таблице "warehouse1_data" и при нахождении совпадений более чем 100 000 записей -без индекса на сортировку и ограничение выборки добиться приемлемой производительности невозможно.

И второй вопрос.
Почему в отчете для сортировки: Temporary Files Required For: Order By
Если сортировка только по индексированному полю, то конечно этой записи нет.

"Temporary Files" Это временный файл? Или временная таблица?
DBSPACETEMP в config указаны.

select sid, seqscans, total_sorts, dsksorts, max_sortdiskspace from syssesprof ничего нет c сортировкой на диске.

И что сбрасывается в этот файл (таблицу)? Можно ли как-то посмотреть что там и какого размера.
Если в таблице, в которой сортировка, есть поля типа: text (не в отдельном пространстве)-они тоже сбрасываются в "Temporary Files"?
Может тогда выделить для этих полей отдельное space?

Заранее огромное спасибо.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / MULTI_INDEX с bts индексом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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