Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что быстрее : set filter или locate / 8 сообщений из 8, страница 1 из 1
25.08.2006, 07:07
    #33941855
fp-
fp-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
К примеру в таблице несколько тыщ записей. Что выполниться быстрее set filter или locate ? Понятно, что конечный результат будет разный. Не в этом вопрос. А что больше загрузит сеть (сетевая программа) ?
...
Рейтинг: 0 / 0
25.08.2006, 07:33
    #33941875
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
fp-К примеру в таблице несколько тыщ записей. Что выполниться быстрее set filter или locate ? Понятно, что конечный результат будет разный. Не в этом вопрос. А что больше загрузит сеть (сетевая программа) ?SET FILTER будет работать медленнее. Лучше построить индекс(ы). И функцией SEEK() осуществлять поиск. По моему так.
...
Рейтинг: 0 / 0
25.08.2006, 09:48
    #33942060
pruha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
Или при наличие полей по которым идет поиск в индексах
select ... Тогда рашмор дает о себе знать . Но это именно на dbf.
если это курсоры из бд (SQL,Oracle...) тогда другой подход
...
Рейтинг: 0 / 0
25.08.2006, 12:19
    #33942603
karly™
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
А самому попробовать? Сгенерировать большую табличку, положить на сетевой диск, и измерить скорость работы?

Ответы на многие вопросы по быстродействию (от чего зависит скорость работы Locate и Set Filter, как сгенерировать тестовые данные, и т.п.) можно найти в соответствующей статье на ФоксКлубе
...
Рейтинг: 0 / 0
31.08.2006, 08:40
    #33954303
vf-
vf-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
а помимо быстродействия, есть ли в использовании FILTER TO какие-нибудь подводные камни? типа зависания базы данных при её выполнении или что-нибудь подобное. Быстродействие для меня не сильно важно, т к задача небольшая, число пользователей одновременно не больше 10, записей в основной таблице порядка 7 тыщ.
Просто итог выполнения команд LOCATE И FILTER TO разный и мне больше подходит команда FILTER TO
...
Рейтинг: 0 / 0
31.08.2006, 09:09
    #33954346
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
vf-а помимо быстродействия, есть ли в использовании FILTER TO какие-нибудь подводные камни? типа зависания базы данных при её выполнении или что-нибудь подобное. Быстродействие для меня не сильно важно, т к задача небольшая, число пользователей одновременно не больше 10, записей в основной таблице порядка 7 тыщ.
Просто итог выполнения команд LOCATE И FILTER TO разный и мне больше подходит команда FILTER TOНу вот ведь упертый! Ему говорят: фильтр - это плохо - он не верит. ;-)
7 тыщ для SET FILTER в случае отсутствия подходящих индексов - это уже ощутимо много . А таблички со временем имеют свойство расти.
Используй в таком случае запрос в курсор по условию своего фильтра, это всяко лучше будет.
...
Рейтинг: 0 / 0
31.08.2006, 10:58
    #33954678
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
Фильтр – это некое ограничение, накладываемое при перемещении указателя записи. Причем вычисление выражения фильтра происходит каждый раз при попытке переместить указатель. Логика примерно следующая.

При подаче команды SKIP FoxPro перемещает указатель записи на следующую запись. Если эта запись не удовлетворяет условию фильтра, то FoxPro автоматически перемещает указатель на следующую запись. Опять проверяет условие фильтра. И так до тех пор, пока не будет найдена запись, удовлетворяющая условию фильтра или же не будет достигнут конец таблицы.

Другими словами, фильтр, это не что-то вычисленное один раз при подаче команды SET FILTER. Это условие, которые проверяется каждый раз при попытке перемещения на очередную запись.

Именно поэтому, если условию фильтра не соответствует большое количество записей, то перемещение по такой таблице будет происходить чрезвычайно медленно. Просто слишком возрастет время поиска очередной записи удовлетворяющей условию фильтра.

Имеет смысл использовать фильтр для отсечения небольшого количества записей. Если же надо отфильтровать (отбросить) много записей, то лучше использовать Local View или Select-SQL.
...
Рейтинг: 0 / 0
31.08.2006, 17:52
    #33956482
vf-
vf-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Что быстрее : set filter или locate
всем спасибо, теперь понятно
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Что быстрее : set filter или locate / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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