|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Hi All! Помогите разобраться.Пол-дня потратил безрезультатно.Элементарный запрос,все дожно оптимизироваться,а SYS(3054,12) дает вот: автор Using index tag Monts to rushmore optimize table ord Using index tag Dltd to rushmore optimize table ord Rushmore optimization level for table ord: partial <<==== вот это хочу устранить,д.б. full Using index tag Dltd to rushmore optimize table sr Rushmore optimization level for table sr: full Joining table ord and table sr using temp index Код: plaintext 1. 2. 3. 4. 5. 6.
Ord.kodm Sr.kodm Ord.monts Ord.divcode Мысль подскажите хорошую, а то мозг усохнет Спасибо! VFP9SP2 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2009, 16:17 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
AptexИндексы все есть: Ord.kodm Sr.kodm Ord.monts Ord.divcode Это все индексы, или есть DLTD ? Или есть еще какие, в т.ч. составные? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2009, 18:05 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Во-первых, уровень оптимизации напрямую не связана со скоростью выполнения запроса. Т.е. даже если Вам удастся добиться уровня оптимизации FULL не факт, что запрос начнет выполняться быстрее. Во-вторых, на уровень оптимизации неявно влияет настройка SET DELETED ON Если она имеет значение ON, то в запросе присутствует еще одно не явное условие, которое отсекает записи помеченные как удаленные. Т.е. проверяется условие на значение Deleted(). Впрочем, поскольку у Вас все-таки есть FULL-оптимизация по таблице SR, то, скорее всего, эта настройка у Вас в значении OFF В-третьих, FoxPro не поддерживает оптимизацию по части ключа. Т.е. если у Вас поле Ord.divcode указано как часть выражения индекса, например, что-то вроде index on Ord.divcode + 1 tag MyTag то этот индекс не будет использоваться при оптимизации данного условия. Хотя в принципе может быть использован. В-четвертых, FoxPro не использует при оптимизации индексы с FOR-условием. Исключением являются индексы с FOR-условием по выражению Deleted(). Т.е. если у Вас индекс по полю Ord.divcode выглядит примерно так index on Ord.divcode for empty(Ord.divcode) = .F. tag MyTag то такой индекс не будет использоваться при оптимизации В-пятых, FoxPro не использует при оптимизации индексы, созданные при настройке SET COLLATION отличной от значения этой настройки в момент выполнения запроса. Проверить, при какой настройке был создан индекс можно через функцию IDXCollate(). А текущую настройку можно узнать через SET("COLLATE") Ну, и еще раз напомню. Full-оптимизация вовсе не означает, что запрос будет выполняться быстрее. Это надо проверять экспериментально. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2009, 18:38 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
dltd индекс есть во обеих таблицах,индексы простые,не составные, без условий есть индексы еще по другим полям SET DELETED ON,SET COLLATE - проверю индексы созданы при Collate = "MAСHINE" т.к. таблицы довольно большие и,особенно,orders быстро увеличивается стремился оптимизировать условие объединения автор Joining table ord and table sr using temp index Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2009, 21:36 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Aptexdltd индекс есть во обеих таблицах,индексы простые,не составные, без условий есть индексы еще по другим полям SET DELETED ON,SET COLLATE - проверю Ага, значит Вы нас не инфоррмировали полностью, и при этом хотите получить полный ответ?!! Похоже, что DLTD - это и есть индекс по DELETED() (проверить) А вот индекс kodm похоже, отдельно не существует Иначе не было бы автор Joining table ord and table sr using temp index Ведь объединение идет по kodm, а на самом деле создается временный индекс Проверить также наличие отдельного тэга divcode. Однако, как писал В.М., partial не означает медленно, а full может не быть быстро ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2009, 11:03 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Прошу прощения! Индексы по DELETED() есть в обеих таблицах,теги по kodm чистые,отдельные поле kodm C(6) в обеих таблицах,тег divcode чистий,отдельный. Есть сомнение по COLLATE.Завтра перепроверю все. Большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2009, 22:03 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Hi All! Большое спасибо! Решилось. автор Using index tag Monts to rushmore optimize table ord Using index tag Divcode to rushmore optimize table ord Using index tag Dltd to rushmore optimize table ord Rushmore optimization level for table ord: full Using index tag Dltd to rushmore optimize table sr Rushmore optimization level for table sr: full Joining table ord and table sr using index tag Kodm Оказалось,что в VFP настройка COLLATE = "RUSSIAN",а индексы = "MACHNE" исправил COLLTE = "MACHINE" и ОК ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2009, 16:33 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
Aptex, Ну, пока Вы там проверяете все, что считаете нужным, я предложу путь проверки, по которому пошел бы сам: 1) через COPY TO сделать копии таблиц (без индексов!!!) и дальнейшие действия проводить только с копиями; 2) сделал бы тот же запрос и посмотрел результат оптимизации (ничего хорошего не должно быть, ес-но); 3) последовательно добавлял бы по одному тегу в каждую таблицу, каждый раз проверяя оптимизацию запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2009, 16:41 |
|
Оптимизация запроса
|
|||
---|---|---|---|
#18+
igorbikAptex, Ну, пока Вы там проверяете все, что считаете нужным, я предложу путь проверки, по которому пошел бы сам: 1) через COPY TO сделать копии таблиц (без индексов!!!) и дальнейшие действия проводить только с копиями; 2) сделал бы тот же запрос и посмотрел результат оптимизации (ничего хорошего не должно быть, ес-но); 3) последовательно добавлял бы по одному тегу в каждую таблицу, каждый раз проверяя оптимизацию запроса. Спасибо.Обязательно воспользуюсь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2009, 19:48 |
|
|
start [/forum/topic.php?fid=41&msg=36362907&tid=1585769]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 149ms |
0 / 0 |