Главная страница
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.012 c
14-63738
Тип
2003-02-05 13:07
2003.02.20
Есть ли FIBPlus для D6 полность бесплатные?


7-63872
Masya2001
2002-12-21 22:37
2003.02.20
как выкл и вкл мышь и клавиатуру???


14-63774
Nick-From
2003-02-01 14:22
2003.02.20
хочу сканер


14-63793
Г.Каспаров
2003-02-03 17:31
2003.02.20
Ищу кряк к DeepBlue


14-63799
DiamondShark
2003-02-03 16:14
2003.02.20
Нетривиальная, однако, задачка...