Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];
ВнизПрошу помочь... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c