Привет!
> Это пробовали ?
Попробовал. (с переконнектом между запросом, так что если и затесался кэш - то
только
от операционки, знаю, что в идеале надо бы сервак перегрузить, но
правов нету. Кстати, даже после переконнекта кэш операционки вносит
лепту - мой повторный запрос исполняется меньше секунды даже после
переконнекта.)
Каждый запрос в рамках одного подключения исполнялся три раза, привожу результат
третьего исполнения:
Статистика:
Мой I II
Prepare time = 219ms 187ms 219ms
Execute time = 764ms 2s 886ms 624ms
Avg fetch time = 764,00 ms 2 886,00 ms 624,00 ms
Current memory = 67 214 380 67 509 784 67 610 984
Max memory = 88 446 412 78 127 420 67 743 440
Memory buffers = 4 000 4 000 4 000
Reads from disk to cache = 17 542 15 229 8 801
Writes from cache to disk = 0 0 0
Fetches from cache = 73 787 93 782 133 848
*****************************************************************************
Планы:
Мой запрос:
Plan
PLAN JOIN (SORT (SORT (JOIN ((IDX T1 RDB$DATABASE NATURAL)
PLAN (IDX T1 RDB$DATABASE NATURAL)
PLAN (IDX T1 RDB$DATABASE NATURAL), IDX W INDEX (T_SEARCH_WORDS_IDX1), D INDEX
(PK_T_DOCUMENTS)))))
Adapted Plan
PLAN JOIN (SORT (SORT (JOIN ((IDX T1 RDB$DATABASE NATURAL) PLAN (IDX T1
RDB$DATABASE NATURAL) PLAN (IDX T1 RDB$DATABASE NATURAL), IDX W INDEX
(T_SEARCH_WORDS_IDX1), D INDEX (PK_T_DOCUMENTS)))))
Твой первый:
Plan
PLAN JOIN (SORT (IDX W ORDER FK_T_SEARCH_WORDS_1 INDEX (T_SEARCH_WORDS_IDX1,
T_SEARCH_WORDS_IDX1, T_SEARCH_WORDS_IDX1)), D INDEX (PK_T_DOCUMENTS))
Adapted Plan
PLAN JOIN (SORT (IDX W ORDER FK_T_SEARCH_WORDS_1 INDEX (T_SEARCH_WORDS_IDX1,
T_SEARCH_WORDS_IDX1, T_SEARCH_WORDS_IDX1)), D INDEX (PK_T_DOCUMENTS))
Твой второй:
Plan
PLAN (W INDEX (PK_T_SEARCH_WORDS))
PLAN (W INDEX (PK_T_SEARCH_WORDS))
PLAN (W INDEX (PK_T_SEARCH_WORDS))
PLAN (D INDEX (T_DOCUMENTS_IDX3, FK_T_DOCUMENTS))
Adapted Plan
PLAN (W INDEX (PK_T_SEARCH_WORDS)) PLAN (W INDEX (PK_T_SEARCH_WORDS)) PLAN (W
INDEX (PK_T_SEARCH_WORDS)) PLAN (D INDEX (T_DOCUMENTS_IDX3, FK_T_DOCUMENTS))
*****************************************************************************
Насколько я могу судить, твой второй запрос (я его слегка
отредактировал - вместо select * написал select 1 - по идее должно
чуть-чуть меньше памяти слопать) работает толику быстрее за счет
отсутствия сортировки - надо будет посмотреть изменение
производительности, если будет 10 ключевых слов.
На первый из твоих запросов кэш вообще никак не влияет, как я могу
судить.
Но вот что мне интересно - так это почему при количестве чтений
меньшем почти в раза, третий запрос исполняется почти с такой же
скоростью, как и первый?
--
Best regards,
Sergey mailto:[EMAIL PROTECTED]