powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CA-медленно обновляется - помогите советом
25 сообщений из 49, страница 1 из 2
CA-медленно обновляется - помогите советом
    #38149180
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста! MySQL -> ODBC -> CA -> Forma -> Grid -- в 2 раза медленнее заполняется форма, чем просто через SQLEXEC(...,kursor)
При выполнении в среде VFP9 и при 'set tallk on' видно что сканирование(кол записей) происходит дважды прежде чем отоброзятся данные . Просмотрел всю цепочку загрузки - команд типа cout, summ, а тем более CA.CursorRefresh() не использую.
Грешил даже на ипользование CAl.alias='rrr' и CA.tables='ttt' - сделал их одинаковыми.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149401
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в два раза медленнее, это как - 15 и 30 сек или 0.015 и 0.030.
над своей строкой .SelectCMD чтобы найти самый оптимальный вариант прочитав уйму литературы проплюхалась с тестами НЕДЕЛЮ! в итоге, чтобы всё летало, даже пришлось доп.индекс к одной из таблиц прописывать.
А вот так просто, ничего не зная о стрктурах исходных таблиц и тем более о желаемом результате ничего дельного не присоветуешь. Кроме как поменять железо - будет в два раза быстрее.
Ну, может ГУРУ вот так неглядя решат проблему
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149424
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛюдмilaКроме как поменять железо - будет в два раза быстрее.и то не факт :)
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149438
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй поставить CA.FetchSize = -1
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149461
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
this.n_journal.UpdateType = 1
this.n_journal.whereType = 3
this.n_journal.FetchSize = -1
this.n_journal.FetchAsNeeded = .F.
select в обоих случаях одинаковый
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149476
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
время на 80тыс записях в 1вар -3сек а на 2вар- 6сек
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149846
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще!
param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора

this.CA.SelectCmd = 'select *' + param_zapT
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149894
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIVA_CAЕще!
param_zapT='from journal_param where LEFT(ksp,5)="'+LEFT(_ksp,5)+'"' && делаю подобие параметризованного курсора

Замени на это:
Код: sql
1.
param_zapT='from journal_param where ksp = LIKE "'+LEFT(_ksp,5)+'%"'


Тогда если у тебя есть индекс по ksp то сервер его задействует. если нет, то наверно есть смысл создать.

и вместо * лучше нужные поля перечислить если не все нужны.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38149915
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. Равно не стер, так правильно:
Код: sql
1.
param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%'])


т.е. конечный запрос такой должен получиться
Код: sql
1.
select * from journal_param where ksp LIKE 'QWERT%'
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38150693
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю DIMA T! Ваш вариант с
param_zapT = textmerge([from journal_param where ksp LIKE '<<LEFT(_ksp,5)>>%']) опробовал и индекс создал -
результат тот же.
Проблема осталась - двойной прогон курсора перед заполнением(отоброжением данных) в гриде - как бы после CA.cursorfill() выполняется CA.CursorRefresh() или какая то другая сомманда( count, index ...) - но ничего подобного не нахожу.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38150820
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.NoData = .T.



напиши поподробнее как у тебя все реализовано. Ты в коде CA создаешь или он в DE? Как _ksp появляется
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38151050
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для построения всех СА использую созданный класс на базе стандартно построенного Builderom СА(моих дополнений нет).
CA в DE->BeforeOpenTables создаю и там же отрабатывает Cursorfill() (первый прогон) затем AfterCursorFill из класса (ничего криминального) затем возврат в BeforeOpenTables и при выходе из него -второй прогон и затем отоброжается грид.

public KSP - определяется при входе в программу из другой таблицы.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38151296
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VIVA_CA,
Может это DE чудит, пытаясь переоткрыть курсор и вызывая посторное чтение ? Если нет завязок по RELATION с другими файлами в DE, то лучше вынести создание СА и вызов CURSORFILL в LOAD формы.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38151685
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может мы открыли Америку!?
Для чистоты эксперимента:
Отказался от своего сласса СА, напрямую создал this.NEWOBJECT('ca1', 'CursorAdapter') в Load Формы СА, ЗАРЕМАРКИРОВАЛ
все методы и свойства Формы и Грида - загружается в 2 раза быстрее.

Ремаркирую Load Формы - переношу его содержимое в DE - Двойной прогон остался т.е. и как следствие в 2 раза медленнее.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38151689
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
CA.NoData = .T.


Пробовал это поставить? Грид пустой открывается?
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152058
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поневоле задаёшься мыслью - Неужели для работы с 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Ы)
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152066
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VIVA_CA,
Ничего сверхестественного.
Если в DE создать билдером СА, то в начале INIT-а у него будут такие стhоки:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
do case
	case not pemstatus(This, '__VFPSetup', 5)
		This.AddProperty('__VFPSetup', 0)
	case This.__VFPSetup = 2
		This.__VFPSetup = 0
		return
endcase

Только сейчас понял для чего они служат.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152072
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я до сих пор не поняла (да и незачем пока). Доверилась Фоксу.
Но для чистоты эксперимента по сетке в СА >> Grid вывела запрос
sele Tab1.* from Tab1 order by Fam where like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"
примерно тоже что и у Вас
вернулся через 0.031 сек. по Fam cтоит индекс
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152194
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмilawhere like(left(Fam,5)+'o*',Fam) && по-руски все записи у которых в Фамилии пятый символ "о"Для строк короче пяти символов смысл этого выражения будет немножко другим.
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152413
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем!
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
я отказался и от этого - результат не изменился.
Поделитесь назначением этих строк
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152725
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. открываем Форму с Гридом
2. в меню Tools выбираем ToolBox
3. в разделе VFP Base Classes ToolBoxa ищем значек с названием - DataEnvironment, перетаскиваем его на форму
4. чуть повыше значек CursorAdapter его тащим на форму на значек DE
и ВсЁ
далее, как Вы там говорите - ЗАМАРКИРОВАЛ! ВСЕ СВОЙСТВА И МЕТОДЫ.(страшно даже)
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152796
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152862
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VIVA_CA,
DE почему-то дважды пытается инициализировать объект CA. Поэтому билдер и вставляет в начало INIT эти коды - они предотвращают его повторное выполнение.
Поэтому, лучше оставить в DE только то, что сделано автоматом, а все, что связано открытием файлов вручную и созданием своих объектов CA - выполнять в LOAD формы.
Тогда, по крайней мере, никто не вмешивается в управление этими объектами
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152936
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Sea_Cat

Спасибо, Людмила - только не понятно что с этими значками на форме делать? Получается два DE на форме!?(я взял для эксперимента старую форму где в DE что-то было) и чем отличается Ваш вариант от если в DE по правой кнопке мышки add CursorAdapter
...
Рейтинг: 0 / 0
CA-медленно обновляется - помогите советом
    #38152952
VIVA_CA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточняю: зачем "Тупо на форму с гридом изТулБоха мышкой перетащила DataEnvironment" если DE уже существует даже
на вновь созданной форме?
...
Рейтинг: 0 / 0
25 сообщений из 49, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CA-медленно обновляется - помогите советом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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