Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.20;
Скачать: CL | DM;

Вниз

Прошу помочь...   Найти похожие ветки 

 
Vint ©   (2003-01-30 16:00) [0]

Уважаемые мастера,
месяц назад был вопрос о сортировки по колонке БД и был дан ответ использовать следующую связку Table > DataSetProvider > ClientDataSet > DataSource > DBGrid и
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ClientDataSet1.IndexFieldNames := Column.Field.FieldName;
end;


Теперь мой вопрос: как это работает, почему SQL - тормозит, а тут все просто летает! Почему я не могу сделать то же самое с одним только Table (я же не могу ради сортировки все поля моей БД проиндексировать!)

уж очень хочется разобраться, ну а если че не так поправьте, да и на ответ все же надеюсь :)


 
Vint ©   (2003-01-31 09:15) [1]

я на связи
... прием :)


 
Lord Warlock ©   (2003-01-31 09:27) [2]


> (я же не могу ради сортировки все поля моей БД проиндексировать!)


Ну а почему бы и нет.. Это не очень смертельно :)

А ысе летает потому, что DataSetProvider в момент открытия набора данных передает данные с сервера на клиент (в тч индексы),
и далее работа (ClientDataSet1.IndexFieldNames := Column.Field.FieldName;) производится на локальной машине, а не на сервере.

Советую почитать книжки по программированию 3-х звенных приложений.


 
Vint ©   (2003-01-31 11:16) [3]

>Lord Warlock © (31.01.03 09:27)

Ну а почему бы и нет.. Это не очень смертельно :)
Полей для сортировки много, и я просто боюсь, что пропорционально увеличению количества проиндексированных полей, увеличивается шанс того, что однажды вся БД рухнет!

(в тч индексы)
так индексов то нет! или они создаются автоматически? - не может такого быть! тогда откуда такая скорость?


 
sniknik ©   (2003-01-31 13:10) [4]

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

Про ClientDataSet1, насколько понимаю он работает аналогично ADODataSet, если так, то все данные держит в памяти (рекордсет), в памяти и индексирует при отсутствии индекса на поле (в памяти все быстрее).
И не так уж быстро (попробуй выборку на ~1,5 милиона записей) открывается ~13мин перестроение индекса ~5мин (присвоение свойству Sort:= ИмяПоля) а вот повторное или смена порядка (DECS) проходят моментально. Т.е. раз проиндексированое поле остается таким кокоето время (до закрытия рекордсета или еще чего произойдет).



 
Vint ©   (2003-02-03 10:12) [5]

>sniknik © (31.01.03 13:10)
прочитал только сейчас, спасибо!

P.S. вот если вопрос по коду, типа блин: а как лишние пробелы убрать это дааааа..., а по теории ответить, я смотрю, всем сразу ломы - вот такая закономерность. Обращаться к кому то из профи типа ув. Юрий Зотов ответьте пожалуйста, вроде неудобно :) короче просто даже и не надеялся, что кто то ответит, ан нет нашелся хороший человек :)))
Что я хочу сказать?: давайте помогать друг - другу!!!



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

Текущий архив: 2003.02.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
14-63835
shusha
2003-02-04 15:19
2003.02.20
Где найти компонент Icon


3-63590
Alpine
2003-02-04 13:19
2003.02.20
Как создать копию поля но с другим именем ?


7-63857
JurMax
2002-12-18 22:36
2003.02.20
Выбор раскладки клавиатуры


14-63797
Danilka
2003-02-03 15:42
2003.02.20
А куда делся орешник?


1-63624
BALU1111
2003-02-11 16:00
2003.02.20
msgdailog