Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 9 сообщений из 9, страница 1 из 1
12.12.2009, 16:17
    #36362907
Aptex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
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.
 	SELECT Ord.kodm,Sr.naim,Ord.kwo,Ord.docno ;
		FROM Orders Ord ;
		INNER JOIN Sr AS Sr ON Ord.kodm == Sr.kodm ;
		WHERE Ord.monts = m.ldDate AND Ord.divcode = m.lcDivCode ;
		INTO CURSOR zakaz ;
		ORDER BY Ord.kodm READWRITE
Индексы все есть:
Ord.kodm
Sr.kodm
Ord.monts
Ord.divcode
Мысль подскажите хорошую, а то мозг усохнет
Спасибо!
VFP9SP2
...
Рейтинг: 0 / 0
12.12.2009, 18:05
    #36362960
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
AptexИндексы все есть:
Ord.kodm
Sr.kodm
Ord.monts
Ord.divcode
Это все индексы, или есть DLTD ?
Или есть еще какие, в т.ч. составные?
...
Рейтинг: 0 / 0
12.12.2009, 18:38
    #36362976
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Во-первых, уровень оптимизации напрямую не связана со скоростью выполнения запроса. Т.е. даже если Вам удастся добиться уровня оптимизации 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-оптимизация вовсе не означает, что запрос будет выполняться быстрее. Это надо проверять экспериментально.
...
Рейтинг: 0 / 0
12.12.2009, 21:36
    #36363076
Aptex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
dltd индекс есть во обеих таблицах,индексы простые,не составные, без условий
есть индексы еще по другим полям
SET DELETED ON,SET COLLATE - проверю
индексы созданы при Collate = "MAСHINE"
т.к. таблицы довольно большие и,особенно,orders быстро увеличивается стремился оптимизировать условие объединения
автор
Joining table ord and table sr using temp index

Спасибо!
...
Рейтинг: 0 / 0
13.12.2009, 11:03
    #36363288
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Aptexdltd индекс есть во обеих таблицах,индексы простые,не составные, без условий
есть индексы еще по другим полям
SET DELETED ON,SET COLLATE - проверю

Ага, значит Вы нас не инфоррмировали полностью, и при этом хотите получить полный ответ?!!

Похоже, что DLTD - это и есть индекс по DELETED() (проверить)

А вот индекс kodm похоже, отдельно не существует
Иначе не было бы
автор
Joining table ord and table sr using temp index
Ведь объединение идет по kodm, а на самом деле создается временный индекс

Проверить также наличие отдельного тэга divcode.

Однако, как писал В.М., partial не означает медленно, а full может не быть быстро
...
Рейтинг: 0 / 0
13.12.2009, 22:03
    #36363953
Aptex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Прошу прощения! Индексы по DELETED() есть в обеих таблицах,теги по kodm чистые,отдельные
поле kodm C(6) в обеих таблицах,тег divcode чистий,отдельный.
Есть сомнение по COLLATE.Завтра перепроверю все.
Большое спасибо!
...
Рейтинг: 0 / 0
14.12.2009, 16:33
    #36365438
Aptex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
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" и ОК
...
Рейтинг: 0 / 0
14.12.2009, 16:41
    #36365462
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
Aptex,

Ну, пока Вы там проверяете все, что считаете нужным, я предложу путь проверки, по которому пошел бы сам:
1) через COPY TO сделать копии таблиц (без индексов!!!) и дальнейшие действия проводить только с копиями;
2) сделал бы тот же запрос и посмотрел результат оптимизации (ничего хорошего не должно быть, ес-но);
3) последовательно добавлял бы по одному тегу в каждую таблицу, каждый раз проверяя оптимизацию запроса.
...
Рейтинг: 0 / 0
14.12.2009, 19:48
    #36365842
Aptex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запроса
igorbikAptex,

Ну, пока Вы там проверяете все, что считаете нужным, я предложу путь проверки, по которому пошел бы сам:
1) через COPY TO сделать копии таблиц (без индексов!!!) и дальнейшие действия проводить только с копиями;
2) сделал бы тот же запрос и посмотрел результат оптимизации (ничего хорошего не должно быть, ес-но);
3) последовательно добавлял бы по одному тегу в каждую таблицу, каждый раз проверяя оптимизацию запроса.
Спасибо.Обязательно воспользуюсь
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Оптимизация запроса / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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