|
MULTI_INDEX с bts индексом
|
|||
---|---|---|---|
#18+
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? Заранее огромное спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 16:07 |
|
|
start [/forum/topic.php?fid=44&fpage=1&tid=1606703]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 108ms |
0 / 0 |