Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
13.02.2013, 12:23
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Подскажите пожалуйста! MySQL -> ODBC -> CA -> Forma -> Grid -- в 2 раза медленнее заполняется форма, чем просто через SQLEXEC(...,kursor) При выполнении в среде VFP9 и при 'set tallk on' видно что сканирование(кол записей) происходит дважды прежде чем отоброзятся данные . Просмотрел всю цепочку загрузки - команд типа cout, summ, а тем более CA.CursorRefresh() не использую. Грешил даже на ипользование CAl.alias='rrr' и CA.tables='ttt' - сделал их одинаковыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 13:41
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
А в два раза медленнее, это как - 15 и 30 сек или 0.015 и 0.030. над своей строкой .SelectCMD чтобы найти самый оптимальный вариант прочитав уйму литературы проплюхалась с тестами НЕДЕЛЮ! в итоге, чтобы всё летало, даже пришлось доп.индекс к одной из таблиц прописывать. А вот так просто, ничего не зная о стрктурах исходных таблиц и тем более о желаемом результате ничего дельного не присоветуешь. Кроме как поменять железо - будет в два раза быстрее. Ну, может ГУРУ вот так неглядя решат проблему ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 13:48
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
ЛюдмilaКроме как поменять железо - будет в два раза быстрее.и то не факт :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 13:53
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Попробуй поставить CA.FetchSize = -1 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 14:00
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
this.n_journal.UpdateType = 1 this.n_journal.whereType = 3 this.n_journal.FetchSize = -1 this.n_journal.FetchAsNeeded = .F. select в обоих случаях одинаковый ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 14:04
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
время на 80тыс записях в 1вар -3сек а на 2вар- 6сек ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 16:26
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Еще! param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора this.CA.SelectCmd = 'select *' + param_zapT ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 16:46
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
VIVA_CAЕще! param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора Замени на это: Код: sql 1.
Тогда если у тебя есть индекс по ksp то сервер его задействует. если нет, то наверно есть смысл создать. и вместо * лучше нужные поля перечислить если не все нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.02.2013, 16:56
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Упс. Равно не стер, так правильно: Код: sql 1.
т.е. конечный запрос такой должен получиться Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 10:40
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Благодарю DIMA T! Ваш вариант с param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%']) опробовал и индекс создал - результат тот же. Проблема осталась - двойной прогон курсора перед заполнением(отоброжением данных) в гриде - как бы после CA.cursorfill() выполняется CA.CursorRefresh() или какая то другая сомманда( count, index ...) - но ничего подобного не нахожу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 11:44
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
VIVA_CAБлагодарю DIMA T! Ваш вариант с param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%']) опробовал и индекс создал - результат тот же. Проблема осталась - двойной прогон курсора перед заполнением(отоброжением данных) в гриде - как бы после CA.cursorfill() выполняется CA.CursorRefresh() или какая то другая сомманда( count, index ...) - но ничего подобного не нахожу. Двойной прогон это не должно было решить. Просто выборка должна быстрее происходить. За счет использования индекса. возможно он сначала автоматом отрабатывает, а потом еще раз по cursorfill() попробуй поставить Код: sql 1.
напиши поподробнее как у тебя все реализовано. Ты в коде CA создаешь или он в DE? Как _ksp появляется ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 13:05
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Для построения всех СА использую созданный класс на базе стандартно построенного Builderom СА(моих дополнений нет). CA в DE->BeforeOpenTables создаю и там же отрабатывает Cursorfill() (первый прогон) затем AfterCursorFill из класса (ничего криминального) затем возврат в BeforeOpenTables и при выходе из него -второй прогон и затем отоброжается грид. public KSP - определяется при входе в программу из другой таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 14:34
|
|||
---|---|---|---|
|
|||
CA-медленно обновляется - помогите советом |
|||
#18+
VIVA_CA, Может это DE чудит, пытаясь переоткрыть курсор и вызывая посторное чтение ? Если нет завязок по RELATION с другими файлами в DE, то лучше вынести создание СА и вызов CURSORFILL в LOAD формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 17:19
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Может мы открыли Америку!? Для чистоты эксперимента: Отказался от своего сласса СА, напрямую создал this.NEWOBJECT('ca1', 'CursorAdapter') в Load Формы СА, ЗАРЕМАРКИРОВАЛ все методы и свойства Формы и Грида - загружается в 2 раза быстрее. Ремаркирую Load Формы - переношу его содержимое в DE - Двойной прогон остался т.е. и как следствие в 2 раза медленнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 17:21
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Код: sql 1.
Пробовал это поставить? Грид пустой открывается? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 22:48
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Поневоле задаёшься мыслью - Неужели для работы с MySQL нужно проектировать классы, добавлять this.NEWOBJECT('ca1' Судя по Вашим мытарствам Да! Пока свежо впамяти поведаю: Тупо на форму с гридом изТулБоха мышкой перетащила DataEnvironment, затем в него из того же ТулБокса - CursorAdapter, слегка подправила сгенерированный программой код. Прописала .SelectCmd="sele Tab1.*,.... left join ......join Group..where... .UpdatableFieldList="Id.........................." .UpdateNameList="Id........................." .KeyFieldList=..................... первоначально никаких After | Before пристегнулась ремнями безопасности и .CursorFill() всё полетело не смотря на пару тяжелых таблиц-источников и мудрёный select (тестировала локально, затем по сети -без разницы) Может и Вам стоит с этого начать и по ходу работы добавить "навороты"(Afterы и BeforЫ) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 22:59
|
|||
---|---|---|---|
|
|||
CA-медленно обновляется - помогите советом |
|||
#18+
VIVA_CA, Ничего сверхестественного. Если в DE создать билдером СА, то в начале INIT-а у него будут такие стhоки: Код: javascript 1. 2. 3. 4. 5. 6. 7.
Только сейчас понял для чего они служат. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.02.2013, 23:09
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
А я до сих пор не поняла (да и незачем пока). Доверилась Фоксу. Но для чистоты эксперимента по сетке в СА >> Grid вывела запрос sele Tab1.* from Tab1 order by Fam where like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о" примерно тоже что и у Вас вернулся через 0.031 сек. по Fam cтоит индекс ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 04:55
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Людмilawhere like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"Для строк короче пяти символов смысл этого выражения будет немножко другим. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 10:56
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Спасибо всем! 1 Dima T: только сейчас проверил с CA.NoData = .T. -> Грид пустой открывается. 2 Людмила : на форму с гридом изТулБоха мышкой перетащила DataEnvironment, затем в него из того же ТулБокса - CursorAdapter Я не совсем понял эту технологию. Как организован ТулБох? Если можно подробнее! 3 Sea_Cat: да, вначале в моем слассе билдер создал в init do case case not pemstatus(This, '__VFPSetup', 5) This.AddProperty('__VFPSetup', 0) case This.__VFPSetup = 2 This.__VFPSetup = 0 return endcase я отказался и от этого - результат не изменился. Поделитесь назначением этих строк ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 13:23
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
1. открываем Форму с Гридом 2. в меню Tools выбираем ToolBox 3. в разделе VFP Base Classes ToolBoxa ищем значек с названием - DataEnvironment, перетаскиваем его на форму 4. чуть повыше значек CursorAdapter его тащим на форму на значек DE и ВсЁ далее, как Вы там говорите - ЗАМАРКИРОВАЛ! ВСЕ СВОЙСТВА И МЕТОДЫ.(страшно даже) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 13:50
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
tanglirЛюдмilawhere like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"Для строк короче пяти символов смысл этого выражения будет немножко другим. нормально так. КАким?!? научите меня и VIVA_CA - он тоже что то подобное пытается извлеч. а лучше подскажите как из табл со структурой field 1 | f2 | f3 | f4 | Иванов | 0 | 0 | 1 | Петров | 0 | 1 | 0 | Сидров | 1 | 0 | 0 | сделать программно таблицу Иванов | Петров | Cидров | 0 | 0 | 1 0 | 1 | 0 1 | 0 | 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 14:25
|
|||
---|---|---|---|
|
|||
CA-медленно обновляется - помогите советом |
|||
#18+
VIVA_CA, DE почему-то дважды пытается инициализировать объект CA. Поэтому билдер и вставляет в начало INIT эти коды - они предотвращают его повторное выполнение. Поэтому, лучше оставить в DE только то, что сделано автоматом, а все, что связано открытием файлов вручную и созданием своих объектов CA - выполнять в LOAD формы. Тогда, по крайней мере, никто не вмешивается в управление этими объектами ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.02.2013, 14:53
|
|||
---|---|---|---|
CA-медленно обновляется - помогите советом |
|||
#18+
Спасибо, Sea_Cat Спасибо, Людмила - только не понятно что с этими значками на форме делать? Получается два DE на форме!?(я взял для эксперимента старую форму где в DE что-то было) и чем отличается Ваш вариант от если в DE по правой кнопке мышки add CursorAdapter ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%BC%D1%80.+%D0%A2%D1%8D&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
71ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 696ms |
total: | 908ms |
0 / 0 |