Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];

Вниз

О фильтрах   Найти похожие ветки 

 
kalliopiy   (2002-07-26 11:48) [0]

Здравствуйте!

Вопрос у меня, конечно, интересный, хотя может и не совсем понятный - не знает ли кто, что работает быстрее: фильтрование через запись условия в свойство Filter или через обработку события OnFilterRecords?


 
Weare   (2002-07-26 12:07) [1]

Я точно не зная, но одно могу сказать точно: если использовать свойство Filter, то не нужны никакие индексы, которые постоянно слетают!!!


 
VAleksey   (2002-07-26 12:22) [2]

Одинаково.


 
VAleksey   (2002-07-26 12:23) [3]

МММ. Хотя в событии ты можешь такого навернуть :) , что будет жутко тормозить !


 
Mike Kouzmine   (2002-07-26 12:32) [4]

Попробуй сам и расскажи нам


 
kalliopiy   (2002-07-26 12:38) [5]


> Mike Kouzmine


Хорошая идея! Но для чего бы я тогда спрашивал? Я ж только пишу программу и в БД записей - всего ничего, так что и тестировать не на чем... Хотя, может быть, когда-нибудь попробую...


 
Mike Kouzmine   (2002-07-26 12:41) [6]

А из Demo не пробывал. Да на любой таблице.


 
kalliopiy   (2002-07-26 12:50) [7]

А там их, что - много?

Тут нужно записей, эдак ...надцать тысяч - вот тогда бы дело пошло!

И к тому же, насколько я понял, работают данные методы абсолютно по разному: если через Filter, то сразу же отфильтровываются все записи и доступны только удовл. условию, а если через OnFilterRecords, то событие это будет обрабатываться не единожды, а каждый раз при перемещении на новую запись. Так что даже не вижу как и сравнить их по быстроте выполнения.

Короче, я сам понял, что вопрос, конечно, интересный, но из разряда самопротиворечивых! :)


 
Mike Kouzmine   (2002-07-26 12:53) [8]

Ну так сделай цикл. Извини, но халява начинает доставать.


 
Mike Kouzmine   (2002-07-26 12:54) [9]

Ладно сам проверю, а то и мне стало интересно, минут через 15 отвечу.


 
Johnmen   (2002-07-26 12:55) [10]

>...если через Filter, то сразу же отфильтровываются все записи и доступны только удовл. условию...

А кто пределяет доступность ? :)


 
Mike Kouzmine   (2002-07-26 13:09) [11]

Все верно, onFilterRecord работает чуть медленее
Filter (3335,3395,3375)
onFilterRecord (3485,3505,3445)
Все в тиках по три раза


 
kalliopiy   (2002-07-26 13:11) [12]


> Mike Kouzmine

Спасибо за неподдельный интерес!


> Johnmen ©


Что значит "кто определяет доступность"? Конечно, TDataSet, в общем случае. Или тебя снова глючит? Слова опять путаешь? Ай-яй-яй! :)


 
Johnmen   (2002-07-26 13:24) [13]

>kalliopiy © (26.07.02 13:11)

На этот раз нет :) Просто слишком иносказательно спросил.
В общем так. Данные методы по сути работают одинаково.
А разница, полученная Mike Kouzmine (если он все делал корректно), может объясняться лишними вызовами OnFilterRecords.


 
Mike Kouzmine   (2002-07-26 13:31) [14]

В таблице есть поле PARTNO, имеется одно значение "271701"
1 В дизайне пишу PARTNO="271701"
2 Afteropen пишу
I := GetTickCount;
Table1.Filtered := True;
I := GetTickCount - I;
Label1.Caption := IntToStr(I);
3 На onShow пишу
Table1.Open

1 onFilterRecords пишу
Accept := Table1PARTNO.Value = "271707"
остальное без изменений

Может правда что-то неправильно?


 
Mike Kouzmine   (2002-07-26 13:33) [15]

Естественно во втором случае Filter равен ""


 
Anatoly Podgoretsky   (2002-07-26 13:46) [16]

Работает это абсолютно по разному, но для испцтаний надо иметь большую таблицу, и условие создавать разные от одной записи до нескольких тысяй, при том надо сравнивать как появление отображение, так и перемещение по набору, особенно заметна разница при перемещении, скажем когда из всего набора получается процентов так 10 и разбрасанных по всей таблице. В одних случаях будет быстрее одно, в других другое.
Но зачем эти эксперименты, если эти вещи предназначены для разных целей, первое для фильтрации средствами движка, а второе для тех случаев когда иначе нельзя, условие отбора выбирается в обработчике.

kalliopiy © (26.07.02 12:38)
В чем проблема, нагенерируй пару сотен тысяц записей и испытывай


 
Johnmen   (2002-07-26 13:54) [17]

>Anatoly Podgoretsky © (26.07.02 13:46)
>...абсолютно по разному...средствами движка...когда иначе нельзя,

Хотелось бы поподробнее...В частности, по поводу движка.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.011 c
6-48224
ole
2002-06-01 07:45
2002.08.15
Отключение клиента TClientSocket.


4-48365
mev2000
2002-06-08 23:46
2002.08.15
Как в KOL организовать рекурсивный поиск фалов???


3-47950
Alex_M
2002-07-25 15:59
2002.08.15
Как обойти пароль при подключении к IB через BDE?


14-48316
str
2002-07-21 13:03
2002.08.15
Посоветуйте какой-нить программный прокси.


14-48247
sonechka
2002-07-18 15:43
2002.08.15
Проблема с загрузкой компьютера. Помогите!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский