Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
USE и SELECT в сети
|
|||
|---|---|---|---|
|
#18+
Несколько вопросов для понимания. Ситуация: Таблица NameTabe.dbf лежит на C: компьютера A. Компьютер В соеденен с компьютером A локальной сетью (для него X - C: компьютера A). Что происходит(какие манипуляции совершает FOX с исходной таблицей NameTabe.dbf ) когда в VFP на компьютере В выполняютя следующие команды: 1. USE X:\NameTabe.dbf SHARED 2. SELECT * FROM X:\NameTabe.dbf WHERE NameField=1 INTO TABLE C:\NameTabe.dbf 3. SELECT * FROM X:\NameTabe.dbf WHERE .T. INTO TABLE C:\NameTabe.dbf 4. USE X:\NameTabe.dbf SHARED - в FOX на компьютере A когда п1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2003, 21:13 |
|
||
|
USE и SELECT в сети
|
|||
|---|---|---|---|
|
#18+
1. USE X:\NameTabe.dbf SHARED В FoxPro создается идентификатор (хендл, дескриптор) указанной таблицы. В FoxPro - этот идентификатор называется " рабочая область ". Собственно закачка данных произойдет, только когда они потребуются. 2. SELECT * FROM X:\NameTabe.dbf WHERE NameField=1 INTO TABLE C:\NameTabe.dbf Если в данном случае есть Rushmore-оптимизация (как минимум, должен быть индекс по полю NameField), то на клиентскую машину закачивается соответсвующий индексный тэг. В нем отбираются указатели записи на записи со значением NameField=1. Затем с сервера вытягиваются только записи с найденными значениями указателя и формируется таблица C:\NameTable.dbf Если оптимизации нет, то сначала качается ВСЯ таблица X:\NameTable и уже у клиента выполняется выборка и формирование итога. Факт оптимизации можно проверить по функции SYS(3054,1). Должно быть как минимум "Partial". 3. SELECT * FROM X:\NameTabe.dbf WHERE .T. INTO TABLE C:\NameTabe.dbf На клиентскую машину закачивается ВСЯ таблица X:\NameTable и уже у клиента выполняется выборка и формирование итога. 4. USE X:\NameTabe.dbf SHARED - в FOX на компьютере A когда п1. Не понял? Что произойдет если открыть одну и ту же таблицу с разных компьютеров? Ничего страшного. Будут созданы идентификаторы этой таблицы на обоих компьютерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2003, 15:20 |
|
||
|
USE и SELECT в сети
|
|||
|---|---|---|---|
|
#18+
==> ВладимирМ <2. SELECT * FROM X:\NameTabe.dbf WHERE NameField=1 INTO TABLE C:\NameTabe.dbf Если в данном случае есть Rushmore-оптимизация (как минимум, должен быть индекс по полю NameField), то на клиентскую машину закачивается соответсвующий индексный тэг. В нем отбираются указатели записи на записи со значением NameField=1. Затем с сервера вытягиваются только записи с найденными значениями указателя и формируется таблица C:\NameTable.dbf > А какой механизм этого "вытягивания"? Если в процессе решения этой задачи на сервере добавили записей и соответственно перестроился индексный файл? Что новые записи в поиске не участвуют ? Извините, третий вопрос правильно так: 3. SELECT * FROM X:\NameTabe.dbf WHERE .F. INTO TABLE C:\NameTabe.dbf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2003, 21:12 |
|
||
|
USE и SELECT в сети
|
|||
|---|---|---|---|
|
#18+
Внутренний механизм реализации Rushmore-оптимизации - это коммерческая тайна Microsoft. Можно делать только некоторые опосредованные выводы. Например, вывод о копировании только тега, а не целиком индексного файла был сделан на основе анализа сетевого трафика в момент выполнения запроса. Насчет учитывания новых записей - это вопрос решает сам FoxPro. Предположительно, если была запись в момент выполнения запроса, то новая запись учтена не будет. 3. SELECT * FROM X:\NameTabe.dbf WHERE .F. INTO TABLE C:\NameTabe.dbf Еще раз посмотрел, что именно качается с сервера при таком запросе. Судя по объемам и адресам прочитанной информации получается следующее: Читается заголовок индексного файла в поисках тега, выражение которого совпадает с выражением, указанном в WHERE. Поскольку вся информация, необходимая для вычисления выражения в WHERE находится у клиента, то она сразу же и вычисляется и с сервера берется сразу результат. По крайней мере я не увидел перетягивания исходной таблицы на клиента. Да это и так чувствуется по скорости выполнения запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2003, 12:47 |
|
||
|
USE и SELECT в сети
|
|||
|---|---|---|---|
|
#18+
Еще вопрос, вытекающий из ответов на 1 и 4: Как в программе быстро узнать количество открытых рабочих областей и их номера. Или только перебор по всем возможным 32767 значениям? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2003, 22:01 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1597848]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 474ms |

| 0 / 0 |
