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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

в новых версиях вфп все нормально итак будет работать
он все равно бежит по той области с которой стартовал
А я пару раз садился на эти грабли в VFP 5 (подробности уже не помню)
...
Рейтинг: 0 / 0
09.02.2006, 10:34
    #33533193
Strong
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DO WHILE или SCAN
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
09.02.2006, 12:41
    #33533823
Oskars
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DO WHILE или SCAN
CrispyРазницы почти никакой, просто SCAN чаще удобнее использовать.
А скорость зависит от самой таблицы, и обычно бывает выше, если она проиндексирована по тому полю, по-которому идет просмотр.

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


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