|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Здравствуйте. В Data Environment формы лежат курсоры на основе LocalView. Все параметризованные с NoDataOnLoad = .T. и обновляются через Requry("MyCursor"). Один курсор создается на основе довольно большой, для фокса, таблице - порядка 5 000 000 записей. Собственно вопрос. Requry("MyCursor") с указанными параметрами отрабатывает приемлемо быстро(1-2 сек). А вот при начальной зогрузке форма открываетя секунд 5-7. Причина, в числе прочих, может быть в размере базовой таблицы, т. к. при исскуственном ее уменьшеннии, форма открываетя быстро. Такое ощущуение, что фокс строит план запроса, по подобию SQL Server. Какие у кого есть советы? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2009, 17:38 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
авторчто фокс строит план запроса, по подобию SQL Server рассмешил смотрим что говорит фокс про уровень оптимизации запроса, читаем про бинарные индексы по делетед() при наличии 9-й версии ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2009, 17:45 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Спасибо за советы, но. 1. Запрос оптимизирован, т.к. при его выполнени с установленными параметрами (LocalView параметризованный) в процессе работы никаких претензий к производительности нет. 2. Если я правильно понимаю, бинарный индекс для deleted() в VFP 9.0 был специально создан, чтобы облегчить работу по управлению удаленными записями (если не так - поправьте), а в базовой таблице нет записей, помеченных на удаление. 3. Опять же, не уверен, но думаю, что при установленном свойстве NoDataOnLoad = .T., при загрузке формы никакие курсоры не должны обновляться. 4. Так вот, что фокс делает когда загружает форму, если при пустой базовой таблице, форма грузится быстро, а при большой - медленно? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 12:30 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Sergey-D4. Так вот, что фокс делает когда загружает форму, если при пустой базовой таблице, форма грузится быстро, а при большой - медленно? Вот выяснением этого и надо заняться. Мы тут не видим вообще никаких таблиц и что-то подсказать не сможем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 12:37 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
автора в базовой таблице нет записей, помеченных на удаление авторЗапрос оптимизирован, т.к. при его выполнени с установленными параметрами (LocalView параметризованный) в процессе работы никаких претензий к производительности нет. я попросил узнать мнение среды фокспро почему Вы сделали вывод о том, что запрос оптимизирован? я могу сделать вывод о том, что при соблюдении всех условий при опред.настройке среды и то он будет только частично оптим-н при отсутствии указанного индекса. наличие или отсутствие уд-х записей ни коим образом не влияет на наобход-ть создания указанного индекса - ответы на вопросы Вы можете найти в справочном рук-ве - понимание рашмора ... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 12:47 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Спасибо, буду разбираться. Просто, для меня было очевидно, что оптимизирован запрос или нет, он не должен выполняться при открытии формы, если ему указали вообще не загружать никаких данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:07 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Sergey-DСпасибо, буду разбираться. Просто, для меня было очевидно, что оптимизирован запрос или нет, он не должен выполняться при открытии формы, если ему указали вообще не загружать никаких данных. Совсем это не очевидно. При NoDataOnLoad = .T. фоксу все равно надо создать курсор, только пустой. А как можно узнать типы и размеры полей не выполняя запрос? Он все равно выполняется, только в каком-то другом режиме. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:15 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Так и я думаю. Механизм создания схемы не совсем понятен. Почему он зависит от размера базовой таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:20 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Глупость спросил. Sorry. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:26 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Sergey-DТак и я думаю. Механизм создания схемы не совсем понятен. Почему он зависит от размера базовой таблицы? Ни разу не пробовал использовать NoDataOnLoad = .T. с DBF. Чего там реально делает фокс - врядли кто-то знает кроме разработчиков. Тут только опытным путем искать наиболее быстрый вариант. Можешь взять FILEMON и посмотреть чего и сколько фокс читает из файлов. Возможно какой-другой код еще выполняется и тормоза от него. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:46 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
авторВсе параметризованные с NoDataOnLoad = .T. абсолютно бесполезные танцы. если нужно загрузить парам-й запрос пустым то и так делаем select * from where &pcWhere pcWhere = '.f.' с таким условие и поднимаем курсор загрузится пустым затем меняем pcWhere = 'tt=1 and .....' и загузятся по условию ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 13:53 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
прошелмимо select * from where &pcWhere pcWhere = '.f.' с таким условие и поднимаем курсор загрузится пустым Саня, не городи ерунды. Фоксу при таком условии pcWhere = '.f.' придется просканировать всю таблу Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 16:28 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Фу ёлки палки пример обращений не оттуда выдрал да ещё с ошибкой , ну собственно говоря Rushmore всё показывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 16:37 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
авторСаня, не городи ерунды. вот пример, скана я не вижу, где ошибка? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2009, 17:37 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Что-то не могу найти тему с Игорем Королевым, ну да ладно. Вот код Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Обрати внимание, что второй селект имеет оптимизируемое выражение, а третий селект уже частично оптимизированное выражение - такое поведение описано в хелпе Using Rushmore Query Optimization to Speed Data Access Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 11:08 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
2 PaulWist я не понимаю что мне хочете доказать и понимать пока не желаю я продемонстировал пример и указал на использовании where .f. рез-т выполнения примера показал отсутствие сканирования таблицы, при усттановке set dele on оптимизатор использует бинарн. индекс, запрос выполняется мгновенно. это доказывает возможность использования для быстрой загрузки пустого курсора такого подхода (указания в запросе where .f.) зачем мне показаны 3 варианта ограничения с вызовом ф-и я не понимаю и это не имеет никакого отношения к конкретно указанной возможности (where .f.) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 16:58 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
прошелмимо зачем мне показаны 3 варианта ограничения с вызовом ф-и я не понимаю и это не имеет никакого отношения к конкретно указанной возможности (where .f.) Что бы показать, что where .f. является неоптимизируемым выражением, те для определения соответствия данному условию надо просканировать всю таблу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 17:42 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
еще раз пример выполните и посмотрите Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
и не понимаю смысла последних 2-х запросов ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 20:11 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Комбинация неоптимизируемого where .f. и оптимизируемого fff()=0 дает частично оптимизируемое выражение. Если бы where .f. AND fff() = 0 состояло бы из полностью оптимизируемых выражений, то фокс бы выдал full-оптимизацию, а этого не происходит, значит выраженеи where .f. является не оптимизируемым - отсюда следует, что фокс не может применить ни какой индекс и вынужден сканировать табличку. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 20:46 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
пример запускали? ? ppp скорость выполнения? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 20:54 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Запускал. ppp = 1 потому, что фокс делает нулевой прогон по структуре таблицы, что бы определить тип возвращаемых данных. А оптимизации всё равно нет, да попытался фокс использовать индекс по deleted() и то потому, что мы ему сказали прячь удаленные данные, обнаружил, что удаленных данных нет и начал сканировать таблу - иначе бы он сказал, что Rushmore - full ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 21:04 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
скорость выполнения? авторppp = 1 потому, что фокс делает нулевой прогон по структуре таблицы, так или по всем записям бежит? так почему ppp = 1 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 21:10 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
прошелмимоскорость выполнения? авторppp = 1 потому, что фокс делает нулевой прогон по структуре таблицы, так или по всем записям бежит? так почему ppp = 1 ? А почему он должен быть не один, ведь в выборке нет записей удовлетворяющих условию where .f., соответственно ppp прирос из-за нулевого прогона. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 21:16 |
|
Data Environment и загрузка формы
|
|||
---|---|---|---|
#18+
Собственно из-за этого мы не можем получить счетчик сканирования, фокс открывает таблу в другом алиасе и чихает на нашу ф-ию, можно посмотреть о скане только по full, non, partitial ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2009, 21:21 |
|
|
start [/forum/topic.php?fid=41&msg=35799771&tid=1586792]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 343ms |
total: | 518ms |
0 / 0 |