powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DO WHILE или SCAN
17 сообщений из 17, страница 1 из 1
DO WHILE или SCAN
    #33530525
stivap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Необходимо пройтись по всем записям таблицы. А вот какой метод лучше использовать, что быстрее?
Спасибо!
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33530556
s.e.r.g.e.y.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем случае будет SCAN .... ENDSCAN
О , к стати и придуман для этого
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531031
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разницы почти никакой, просто SCAN чаще удобнее использовать.
А скорость зависит от самой таблицы, и обычно бывает выше, если она проиндексирована по тому полю, по-которому идет просмотр.
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531074
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyРазницы почти никакой, просто SCAN чаще удобнее использовать.
А скорость зависит от самой таблицы, и обычно бывает выше, если она проиндексирована по тому полю, по-которому идет просмотр.
Однако могут быть довольно неприятные "фичи" при использовании вложенных конструкций типа: SCAN...SCAN...ENDSCAN...ENDSCAN, связанные с автоматическим выполнением skip.
Подробности см. в книге у Попова (хоть по Fox 2.0, хоть по Fox 2.6)
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531293
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyРазницы почти никакой, просто SCAN чаще удобнее использовать.
SCAN - может быть оптимизирована (при определенных услових). DO WHILE не оптимизируется по определению. Как следствие, использование SCAN может привести к существенному ускорению

CrispyА скорость зависит от самой таблицы,
Не столько от таблицы, сколько от факта наличия (существования) индексов и оптимизируемости FOR-условия в команде SCAN

Crispyи обычно бывает выше, если она проиндексирована по тому полю, по-которому идет просмотр.
Вообще-то, все с точностью наоброт. Факт наличия главного индекса (SET ORDER) приводит к замедлению выполнения SCAN. И очень существенному. Вот в этом случае можно говорить, что между SCAN и DO WHILE "разницы почти никакой"
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531360
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2ВладимирМ :

В общем-то, я как раз и имел в виду сканирование по какому-то условию, для чего чаще всего и имеет смысл использовать индекс. А зависимость от таблицы - подразумевается - физическая упорядоченность или неупорядоченность записей (в отсутствие индекса).
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531463
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы категорически не советовал использовать SCAN. Иногда в особо критических ситуациях он меня подводил много раз...

Использование DO WHILE никогда не давало проблем...

P.S. Это мое скромное личное мнение, провереннное многолетней практикой...
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531537
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
авторИногда в особо критических ситуациях он меня подводил много раз...

В каких именно, если не секрет?
Я всегда использую SCAN и он меня не подводил. Может у меня ситуации не те?))
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531576
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey ChЯ бы категорически не советовал использовать SCAN. Иногда в особо критических ситуациях он меня подводил много раз...

Использование DO WHILE никогда не давало проблем...

P.S. Это мое скромное личное мнение, провереннное многолетней практикой...

Да, Сергей если не кодом, то хотя бы описанием, когда возникали проблемы.
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531610
-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
-
Гость
Для надежности я использую такую конструцию
select blablabla
scan
...
*код с "путешествием" по рабочим облястям
...
select blablabla
endscan

Может, я неправ?
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531611
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если мне память не изменяет, то основная проблема scan`а - пропуск (или повторный проход) записей при изменении значений полей образующих текущий индекс. Но та же проблема у DO WHILE со SKIP`ом.

Всегда пользуюсь SCAN`ом, кроме случаев, когда надо дополнительно поработать SKIP`ом вовремя перебора. Глюков фокса не наблюдал ни разу.
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531720
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторselect blablabla

вот так в скане не нужно делать
эта перестраховка из доса идет

в новых версиях вфп все нормально итак будет работать
он все равно бежит по той области с которой стартовал
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33531884
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- авторИногда в особо критических ситуациях он меня подводил много раз...

В каких именно, если не секрет?
Я всегда использую SCAN и он меня не подводил. Может у меня ситуации не те?))Не в тех ли ситуациях, когда в цикле нужно менять значение поля, по которому таблица проиндексирована, причем этот индекс сейчас используется по set order?
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33532637
andrewkor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex11100 авторselect blablabla

вот так в скане не нужно делать
эта перестраховка из доса идетВообще-то и в FPD вполне работает
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33533037
Andrey Ts
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100 авторselect blablabla

вот так в скане не нужно делать
эта перестраховка из доса идет

в новых версиях вфп все нормально итак будет работать
он все равно бежит по той области с которой стартовал
А я пару раз садился на эти грабли в VFP 5 (подробности уже не помню)
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33533193
Strong
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex11100 авторselect blablabla

вот так в скане не нужно делать
эта перестраховка из доса идет

в новых версиях вфп все нормально итак будет работать
он все равно бежит по той области с которой стартовал

VFP 8
"SCAN ... ENDSCAN ensures that, upon reaching ENDSCAN, Visual FoxPro reselects the table that was current when the SCAN ... ENDSCAN loop began."
...
Рейтинг: 0 / 0
DO WHILE или SCAN
    #33533823
Oskars
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CrispyРазницы почти никакой, просто SCAN чаще удобнее использовать.
А скорость зависит от самой таблицы, и обычно бывает выше, если она проиндексирована по тому полю, по-которому идет просмотр.

Ну я бы не сказал разницы почти никакой...
Проводил тесты на таблицах с 2-3 милион записеи...
SCAN .. ENDSCAN работал на много быстреи
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / DO WHILE или SCAN
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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