powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CREATE SQL VIEW VFP8.0
23 сообщений из 23, страница 1 из 1
CREATE SQL VIEW VFP8.0
    #34544169
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, в чем проблема. На серваке расположена табличка, предположим миллион записей. Делаем CREATE SQL VIEW бла-бла-бла SHARED AS SELECT bla-bla-bla FROM Table WHERE Id = (?_lnId)
В момент создания вьюхи, фокс, такое ощущение, начинает тягать с сервака всю табличку, потому что кушает просто гигазы памяти. Если есть джойны, то процесс кушаеть в разы больше. Складывается впечатление, что фокс кросджойнит перечисленные таблы и тащит их на клиента, а затем уже создает вьюшку.
Никто не сталкивался с такой проблемой? Может что-то в религии у фокса правится или какой-нибудь обходной путь есть? Просто некоторые вьюшки уже не хотят апдейтиться. ;-/
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544225
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В момент создания view не открывается, а только текст запроса сохраняется в контейнер БД
проверить просто:
Код: plaintext
1.
2.
lnSec = seconds()
CREATE SQL VIEW ...
MessageBox('Время создания ' + str(seconds() - lnSec,  10 ,  1 ) 

А дальше смотри отладчиком где действительно тормозит
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544262
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ момент создания view не открывается, а только текст запроса сохраняется в контейнер БД
проверить просто:
Код: plaintext
1.
2.
lnSec = seconds()
CREATE SQL VIEW ...
MessageBox('Время создания ' + str(seconds() - lnSec,  10 ,  1 ) 

А дальше смотри отладчиком где действительно тормозит

Мне тоже так казалось. Но лог ODBC говорит обратное.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544325
Алексей О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дак у тебя все таки ODBC соединение с какимто из SQL серверов, или "табличка на серваке" это файл-сервер?
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544337
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Одак у тебя все таки ODBC соединение с какимто из SQL серверов, или "табличка на серваке" это файл-сервер?
Да, извиняюсь - некорректно сформулировал. Все-таки:
CREATE SQL VIEW "бла-бла-бла" REMOTE CONNECTION "бла" SHARED AS SELECT ...

REMOTE цепляется через ODBC на PostgresSQL.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544544
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все он правильно тягает - сколько запрос возвращает записей, столько сервер и передает Фоксу.
По краней мере в MS SQL
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544551
Алексей О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Kruchinin Pahan]CREATE SQL VIEW "бла-бла-бла" REMOTE CONNECTION "бла" SHARED AS SELECT ...
[quot]
не силен в ODBC, но предположу что команда
REMOTE CONNECTION "бла" CREATE SQL VIEW "бла-бла-бла" SHARED AS SELECT ...
поможет
кажется что предыдущая каманда только за выборками ходит на сервер а представление создает у себя, от этого и трафик
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544661
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей О[quot Kruchinin Pahan]CREATE SQL VIEW "бла-бла-бла" REMOTE CONNECTION "бла" SHARED AS SELECT ...
[quot]
не силен в ODBC, но предположу что команда
REMOTE CONNECTION "бла" CREATE SQL VIEW "бла-бла-бла" SHARED AS SELECT ...
поможет
кажется что предыдущая каманда только за выборками ходит на сервер а представление создает у себя, от этого и трафик
Или я чего-то не понял, или последняя команда по синтаксису не проходит.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544701
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BurnВсе он правильно тягает - сколько запрос возвращает записей, столько сервер и передает Фоксу.
По краней мере в MS SQL
Запрос параметризированный по идее результатом запроса должно быть одна, десяток, сотня записей.
Например, задаю ему вьюху в стиле:

SELECT
Lft.Fld1,
Lft.Fld2,
Rgt.Fld3
FROM Lft
INNER JOIN Rgt ON Rgt.ParentKey = Lft.PrimaryKey
WHERE Lft.PrimaryKey = ( ?Code_ )

Так как Lft.PrimaryKey - первичный ключ, теоретически должна возвращаться одна запись, а возвращается что-то типа:
SELECT * FROM Lft ;
SELECT * FROM Rgt ;
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34544987
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если менеджер сервера запрос выполняет правильно значит надо искать описания особеностей ODBC драйвера под ваш сервер. Возможно имено он глючный
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34545169
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin PahanДа, извиняюсь - некорректно сформулировал. Все-таки:
CREATE SQL VIEW "бла-бла-бла" REMOTE CONNECTION "бла" SHARED AS SELECT ...

REMOTE цепляется через ODBC на PostgresSQL.

Повторяю: При выполнении CREATE SQL VIEW никаких обращений к базе не происходит обращение к базе идет по команде use бла-бла-бла или select ... from бла-бла-бла

Код покажи как есть - всей процедуры
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34545639
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПовторяю: При выполнении CREATE SQL VIEW никаких обращений к базе не происходит обращение к базе идет по команде use бла-бла-бла или select ... from бла-бла-бла

Код покажи как есть - всей процедуры

Создал тестовый пример на чистом вновь созданном контейнере. Получил следующее время выполнения:
112.316
0.021

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
CLOSE DATABASES ALL 
CLEAR

OPEN DATABASE d:\src\data\fatfact.dbc				&& Кручинин - локальная

SET DATABASE TO fatfact
SET SAFETY OFF
MakeView_LVSTSTRDOC_VIEW_EDIT()
SET SAFETY ON

CLOSE DATABASES ALL
RETURN

FUNCTION MakeView_LVSTSTRDOC_VIEW_EDIT
***************** View setup for LVSTSTRDOC_VIEW_EDIT ***************
lnSeconds = SECONDS()
CREATE SQL VIEW "LVSTSTRDOC_VIEW_EDIT" REMOTE CONNECTION "PsSqlDb" SHARED AS SELECT ;
  Strstdoc.kod, ;
  Strstdoc.kodhddoc, ;
  Strstdoc.kodstdoc,  ;
  Strstdoc.kodstcards, ;
  Strstdoc.kodstcarddt, ;
  Strstdoc.kodstcardkt, ;
  Strstdoc.kodmsc, ;
  Strstdoc.kodunitdim, ;
  Strstdoc.kodstcards1,  ;
  Strstdoc.quantity, ;
  Strstdoc.price, ;
  Strstdoc.percntnds, ;
  Strstdoc.sumnds,  ;
  Strstdoc.percntnsp, ;
  Strstdoc.sumnsp, ;
  Strstdoc.summa, ;
  strstdoc.sumtransp, ;
  strstdoc.sumndstransp, ;
  strstdoc.sumbrktara, ;
  strstdoc.sumcoursdlt, ;
  strstdoc.sumsumdlt, ; 
  Strstdoc.quantitydoc,  ;
  Strstdoc.isaddrecip, ;
  coalesce(Sprmsc.name,' ') AS namemsc,  ;
  Strstdoc.kodtypetprov, ;
  Strstdoc.kodscores, ;
  Strstdoc.kodtprov, ;
  Strstdoc.datamove, ;
  Strstdoc.stage, ;
  strstdoc.note, ;
  strstdoc.kodmatoborot, ;
  strstdoc.quanwater, ;
  strstdoc.percntwater, ;
  strstdoc.quanfuz, ;
  strstdoc.percntfuz, ;
  strstdoc.koh, ;
  strstdoc.quannature, ;
  strstdoc.udostover, ;
  strstdoc.usefuldate ,;
  strstdoc.kodosf,;
  strstdoc.koddefect,;
  strstdoc.kodremont, ;
  strstdoc.strana, ;
    strstdoc.gtd, ;
    strstdoc.kodhddoc2, ; 
    strstdoc.pasport, ;
    strstdoc.raschetSch, ;
    strstdoc.kapRemSch, ;
    strstdoc.summa_val, ; 
    strstdoc.kodcompany, ;
    strstdoc.kodscoresDt, ;
    strstdoc.kodscoresKt, ;
    Strstdoc.price_rl, ;
  Strstdoc.summa_rl, ;
  Strstdoc.sumnds_rl,  ;
  Strstdoc.kodarcosts, ;
  Strstdoc.summanach, ;
  Strstdoc.summadebt,;
  Strstdoc.datainv,;
  Strstdoc.isrepresent, ;
  Strstdoc.summadoc, ;
  Strstdoc.sumndsdoc ;
  FROM  public.strstdoc ;
  LEFT OUTER JOIN public.sprmsc    ON  Strstdoc.kodmsc = Sprmsc.kod ;
  WHERE Strstdoc.KodHdDoc = ?code_

?SECONDS()-lnSeconds
lnSeconds = SECONDS()

DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'UpdateType',  1 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'WhereType',  3 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'FetchMemo', .T.)
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'SendUpdates', .T.)
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'UseMemoSize',  255 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'FetchSize', - 1 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'MaxRecords', - 1 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'Tables', 'public.strstdoc')
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'Prepared', .F.)
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'CompareMemo', .T.)
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'FetchAsNeeded', .F.)
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'Comment', "")
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'BatchUpdateCount',  1 )
DBSetProp('LVSTSTRDOC_VIEW_EDIT', 'View', 'ShareConnection', .T.)

?SECONDS()-lnSeconds
lnSeconds = SECONDS()

ENDFUNC

...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34545744
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Повторяю: При выполнении CREATE SQL VIEW никаких обращений к базе не происходит обращение к базе идет по команде use бла-бла-бла или select ... from бла-бла-бла

Более того, разгребаю логи ODBC:
Сначала посылается такой запрос:
[3948] Sending SELECT statement on stmt=86273576, cursor_name='SQL_CUR05246E28'
[3948]send_query(): conn=86259984, query='SELECT Strstdoc.kod, Strstdoc.kodhddoc, Strstdoc.kodstdoc, Strstdoc.kodstcards, Strstdoc.kodstcarddt, Strstdoc.kodstcardkt, Strstdoc.kodmsc, Strstdoc.kodunitdim, Strstdoc.kodstcards1, Strstdoc.quantity, Strstdoc.price, Strstdoc.percntnds, Strstdoc.sumnds, Strstdoc.percntnsp, Strstdoc.sumnsp, Strstdoc.summa, strstdoc.sumtransp, strstdoc.sumndstransp, strstdoc.sumbrktara, strstdoc.sumcoursdlt, strstdoc.sumsumdlt, Strstdoc.quantitydoc, Strstdoc.isaddrecip, coalesce(Sprmsc.name,' ') AS namemsc, Strstdoc.kodtypetprov, Strstdoc.kodscores, Strstdoc.kodtprov, Strstdoc.datamove, Strstdoc.stage, strstdoc.note, strstdoc.kodmatoborot, strstdoc.quanwater, strstdoc.percntwater, strstdoc.quanfuz, strstdoc.percntfuz, strstdoc.koh, strstdoc.quannature, strstdoc.udostover, strstdoc.usefuldate , strstdoc.kodosf, strstdoc.koddefect, strstdoc.kodremont, strstdoc.strana, strstdoc.gtd, strstdoc.kodhddoc2, strstdoc.pasport, strstdoc.raschetSch, strstdoc.kapRemSch, strstdoc.summa_val, strstdoc.kodcompany, strstdoc.kodscoresDt, strstdoc.kodscoresKt, Strstdoc.price_rl, Strstdoc.summa_rl, Strstdoc.sumnds_rl, Strstdoc.kodarcosts, Strstdoc.summanach, Strstdoc.summadebt, Strstdoc.datainv, Strstdoc.isrepresent, Strstdoc.summadoc, Strstdoc.sumndsdoc FROM public.strstdoc LEFT OUTER JOIN public.sprmsc ON Strstdoc.kodmsc = Sprmsc.kod WHERE Strstdoc.KodHdDoc = NULL'

Возвращаются типы данных для колонок:
[3948]LIBPQ_execute_query: recent_processed_row_count = 0
[3948]CC_mapping: entering ...
[3948]CC_mapping: rows = 0, columns = 62
[3948]CC_mapping: column = 0
[3948]CC_mapping: set field info: name = kod, typ = 23, typlen = 4, attypmod = -1
[3948]CC_mapping: column = 1
[3948]CC_mapping: set field info: name = kodhddoc, typ = 23, typlen = 4, attypmod = -1
и т.д.

Далее происходит вот что:
[3948]PGAPI_Execute: entering...
[3948]PGAPI_Execute: clear errors...
[3948]recycle statement: self= 188056672
[3948]PDATA_free_params: ENTER, self=188057104
[3948]Exec_with_parameters_resolved: copying statement params: trans_status=1, len=29, stmt='SELECT * FROM public.strstdoc'
[3948] stmt_with_params = 'SELECT * FROM public.strstdoc'
[3948] Sending SELECT statement on stmt=188056672, cursor_name='SQL_CUR0B358460'
[3948]send_query(): conn=86259984, query='SELECT * FROM public.strstdoc'
[3948]LIBPQ_execute_query: entering ...
[3948]in QR_Constructor
[3948]exit QR_Constructor

Эта скотина хряпает целиком все данные из одной таблички, а затем из другой... И почесали:
[3948]CC_mapping: fetch column = kod, value = 375453
[3948]CC_mapping: fetch column = kodhddoc, value = 460309
[3948]CC_mapping: fetch column = kodstdoc, value = NULL
[3948]CC_mapping: fetch column = kodtypetprov, value = NULL
[3948]CC_mapping: fetch column = kodtprov, value = NULL
[3948]CC_mapping: fetch column = kodmsc, value = 9954
[3948]CC_mapping: fetch column = kodunitdim, value = 3
[3948]CC_mapping: fetch column = kodmatoborot, value = NULL
[3948]CC_mapping: fetch column = isaddrecip, value = 0
[3948]CC_mapping: fetch column = kodscores, value = 10.50

Причем создание вьюшки это единственная ситуация когда из запроса выдергиваются FROM выражения и выдергивается все содержимое таблички.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34546792
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПовторяю: При выполнении CREATE SQL VIEW никаких обращений к базе не происходит ...Тут я был не прав, в случае REMOTE VIEW запрос происходит.

Kruchinin PahanWHERE Strstdoc.KodHdDoc = NULL Вот тут и собака порылась, любое значение при сравнении с NULL возвращает TRUE, соответственно твой запрос равносилен WHERE TRUE , и происходит выборка всех записей

Надо проинициализировать code_ перед созданием представления:
Код: plaintext
1.
2.
3.
lnSeconds = SECONDS()
code_ =  0 
CREATE SQL VIEW "LVSTSTRDOC_VIEW_EDIT" REMOTE CONNECTION "PsSqlDb" SHARED AS SELECT ;
...
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34547265
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
Kruchinin PahanWHERE Strstdoc.KodHdDoc = NULL Вот тут и собака порылась, любое значение при сравнении с NULL возвращает TRUE, соответственно твой запрос равносилен WHERE TRUE , и происходит выборка всех записей

Надо проинициализировать code_ перед созданием представления:
Код: plaintext
1.
2.
3.
lnSeconds = SECONDS()
code_ =  0 
CREATE SQL VIEW "LVSTSTRDOC_VIEW_EDIT" REMOTE CONNECTION "PsSqlDb" SHARED AS SELECT ;
...

Хмм... На PgSQL NULL ближе к False, чем к True. Иначе говоря должно вернуться 0 записей. Этот запрос так и возвращает 0 записей (по логам видно). Только какого-то хрена фокс после выполнения исходного запроса начинает дергать таблички по отдельности и целиком:
[3948]send_query(): conn=86259984, query='SELECT * FROM public.strstdoc'

Не ну неужели никто с этим не сталкивался?
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34547862
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая разница, сколько времени Fox создает представление? Это же процесс, который, как правило, выполняется один раз в Design-Time. Поэтому, по большому счету, сугубо "фиолетово" сколько времени он на это потратит.

Критичным является не время создания Remote View, а время его открытия. Т.е. реакция при работе в Run-Time.

По сути, Ваш вопрос из цикла: а почему индексирование таблиц происходит так медленно? Да потому что!

Скорее всего, разработчикам просто в голову не приходило оптимизировать этот процесс. Помнится, в младших версиях FoxPro (кажется до VFP5) при открытии параметризированных View в режиме NODATA тоже выкачивалась ВСЯ таблица на клиента и только потом отсекались все записи. В старших версиях FoxPro это исправили, а режим создания View, видимо, не стали поправлять.

Если для Вас критично именно время создания, то, возможно, имеет смысл вместо RemoteView использовать объект CursorAdapter. Он был введен как раз в VFP8.

CursorAdapter - это более развитый объект по сравнению с Remote View. Хотя, несколько сложнее в понимании.


Dima Tлюбое значение при сравнении с NULL возвращает TRUE
Значение NULL - это неизвестно какое значение. Поэтому, сравнение NULL с любым фиксированным значением по любым правилам всегда вернет NULL. Неизвестно что. Для логических операторов - это интерпретируется как False. Точнее, как условие, не соответствующее истине. Не истинное условие.

Код: plaintext
1.
2.
3.
?NULL =  1 
?NULL !=  1 
?IIF(NULL,.T.,.F.)  && Т.е. NULL здесь воспринимается как .F.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34548155
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМКакая разница, сколько времени Fox создает представление? Это же процесс, который, как правило, выполняется один раз в Design-Time. Поэтому, по большому счету, сугубо "фиолетово" сколько времени он на это потратит.

Критичным является не время создания Remote View, а время его открытия. Т.е. реакция при работе в Run-Time.

По сути, Ваш вопрос из цикла: а почему индексирование таблиц происходит так медленно? Да потому что!

По сути, согласен. Но, когда объем возвращаемой информации превышает 2 гига для каждого из SELECT * FROM bla-bla, фокс просто трапается.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34550248
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin Pahan Но, когда объем возвращаемой информации превышает 2 гига для каждого из SELECT * FROM bla-bla, фокс просто трапается.

Это системное ограничение фокса, по сути SELECT * FROM bla-bla создает временную таблицу. Да и 2Г тянуть на клиента как-то не кашерно.
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34550484
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PaulWist Kruchinin Pahan Но, когда объем возвращаемой информации превышает 2 гига для каждого из SELECT * FROM bla-bla, фокс просто трапается.

Это системное ограничение фокса, по сути SELECT * FROM bla-bla создает временную таблицу. Да и 2Г тянуть на клиента как-то не кашерно.
Я в курсе, что это системное ограничение. И в курсе, что тянуть 2Г некошерно. Вопрос, можно ли как-то уболтать фокс этого не делать?
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34550530
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kruchinin PahanЯ в курсе, что это системное ограничение. И в курсе, что тянуть 2Г некошерно. Вопрос, можно ли как-то уболтать фокс этого не делать?

Можно.

1. Возвращать результат запроса в курсор меньше 2Г
1.1 Ограничивать сам запрос меньшим кол-вом записей
1.2 Если уж очень хочется, то тянуть порезанные куски меньше 2Г
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34551298
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю надо поискать другой ODBC-драйвер

попробовал на MS-SQL 2000: 0,3 сек
Код: plaintext
1.
2.
3.
4.
5.
6.
lnSeconds = SECONDS()
CREATE SQL VIEW "LVSTSTRDOC_VIEW_EDIT" REMOTE CONNECTION "MSSQL" SHARED AS SELECT *;
  FROM  _Document7;
  	left outer join _Document7_VT64 on _Document7._Fld39 = _Document7_VT64._Fld67;
  WHERE _Document7._Number = ?code_

MessageBox(SECONDS()-lnSeconds)
VFP 9. Таблички 1 и 8 млн. записей весом 500 и 800 Мб
Сетка WiFi (1.5 Мб/сек)
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34551517
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похожие запросы к логе odbc есть:
CREATE VIEWvfp9 abc-a40 ENTER SQLPrepare
HSTMT 01C61D90
UCHAR * 0x019EF630 [ -3] "SELECT * FROM _Document7 left outer join _Document7_VT64 on _Document7._Fld39 = _Document7_VT64._Fld67 WHERE _Document7._Number = ?\ 0"
SDWORD -3
...
vfp9 abc-a40 ENTER SQLPrepare
HSTMT 01C62A70
UCHAR * 0x019F03E8 [ -3] "SELECT * FROM _Document7\ 0"
SDWORD -3
...
vfp9 abc-a40 EXIT SQLPrepare with return code 0 (SQL_SUCCESS)
HSTMT 01C62A70
UCHAR * 0x019F03E8 [ -3] "SELECT * FROM _Document7\ 0"
SDWORD -3
...

И открытие представления: USEvfp9 abc-a40 ENTER SQLExecDirect
HSTMT 01C62A70
UCHAR * 0x00F52B38 [ -3] "SELECT * FROM _Document7 left outer join _Document7_VT64 on _Document7._Fld39 = _Document7_VT64._Fld67 WHERE _Document7._Number = ? \ 0"
SDWORD -3

Я так понимаю SQLPrepare - проверяет синтаксис запроса и м.б. план выполнения составляется.
а SQLExecDirect выполнение запроса и возврат результата.

А вот кто решает SQLPrepare или SQLExecDirect, фокс или драйвер - это вопрос. если драйвер, то смена драйвера может помочь
...
Рейтинг: 0 / 0
CREATE SQL VIEW VFP8.0
    #34553011
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
А вот кто решает SQLPrepare или SQLExecDirect, фокс или драйвер - это вопрос. если драйвер, то смена драйвера может помочь
Спасибо за инфу. Буду копать.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / CREATE SQL VIEW VFP8.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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