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

Вниз

Сортировка DxDBGrid   Найти похожие ветки 

 
Volodya_   (2004-03-07 21:43) [0]

При сортировке средствами DxDBGrid сильно уменьшается скорость позиционирования на запись с помощью GotoBookmark. Как можно увеличить скорость?


 
Zacho ©   (2004-03-07 21:57) [1]

Во-первых - не использовать GotoBookmark, как сильно устаревшую и оставленную для совместимости с Д2.
Во-вторых - не сортировать средствами DxDBGrid.
В-третьих - не выбирать на клиента офигенное кол-во записей.
На самом деле, решение в пункте 3 :)


 
Volodya_   (2004-03-07 22:05) [2]

Как можно выводить не все записи когда клиенту нужно видеть все?
Както динамически подгружать? как это сделать?


 
Volodya_   (2004-03-07 22:15) [3]

Вообщето задача такая:
Например, нужно выделить n - колличество записей и у всех поменять, например, поле status на 1. Пока без сортировки всё работает очень быстро, но только сделать сортировку ... все ...


 
Zacho ©   (2004-03-07 22:35) [4]

Какая СУБД и компоненты доступа ?

Ты уверен, что клиенту нужно видеть 10000 записей ?
Ни один нормальный человек не может нормально работать с таблицей с несколькими тысячами записей.
Вот пример :
Торгово-складская система. Номенклатура - десятки тысяч. Интерфейс: слева - дерево с классификатором товаров, справа - грид с товарами, относяшимися к выбранному в treeview пункту. Естественно, есть еще фильтры и т.п. Поиск по всей номенклатуре - отдельно.

> Volodya_   (07.03.04 22:15) [3]

К сортировке это не имеет никакого отношения. Описывай задачу подробнее, телепаты - редкость.


 
Volodya_   (2004-03-07 22:45) [5]

Клиент сам ставит фильтры (в DxDBGrid) как ему удобно ... В своей задаче я немогу сделать как "Торгово-складская система", а база ж написано MSSQL. Мне нужно както увеличить скорость позиционирования на выделенных записях


 
Zacho ©   (2004-03-07 23:05) [6]

Блин, снова никакой полезной информации.
Вот тебе ответ: больше памяти, более быстрый канал, более шустрый сервер. Иначе, исходя из приведенных данных - никак.
И еще: разберись, как работает класс TDataSet. В любом случае, лишним не будет.
Традиционно ;) извеняюсь за излишне резкий тон.


 
Volodya_   (2004-03-07 23:16) [7]

Volodya_   (07.03.04 22:15) [3]
Вообщето задача такая:
Например, нужно выделить n - колличество записей и у всех поменять, например, поле status на 1. Пока без сортировки всё работает очень быстро, но только сделать сортировку ... все ...

Какая ещё полезная информация необходима? Вот код
     for i:=0 to MainGrid.SelectedCount-1 do
     begin
       QueryMainList.GotoBookmark(pointer(MainGrid.selectedrows[i]));
       QueryMainList.Edit;
       QueryMainList.FieldByName("status").AsInteger := 1      end;
     QueryMainList.Post;


 
Zacho ©   (2004-03-07 23:32) [8]


> Какая ещё полезная информация необходима?

Хотя бы компоненты доступа.

Сортировка здесь не причем. Точнее, при том, что скорее всего при сортировке делается FetchAll.
Хочешь быстро - или делай это одним запросом, или не выбирай много записей. Или см. [6]


 
Volodya_   (2004-03-07 23:50) [9]

> Хотя бы компоненты доступа.
ADOQuery, DataSource, DxDBGrid

Запросом я делал, тоже долго


 
Zacho ©   (2004-03-08 00:04) [10]


> Запросом я делал, тоже долго

Как именно делал ? В смысле, код приведи. И все сопутствуещее.
А вообще, я устраняюсь из этой ветки. Хотя бы потому, что не спец в MSSQL. У меня на IB подобные запросы работают не то чтобы быстро, а очень быстро :) Не верю, что MSSQL очень тормознее :) Скорее в обратное поверил бы :)


 
Johnmen ©   (2004-03-08 01:13) [11]

Всё, что говорил Zacho © справедливо, независимо от либых внешних условий...
Если хочешь быстро сортировать получаемый НД, заведи индекс на сортирумое поле...


 
Volodya_   (2004-03-08 10:10) [12]

Я понимаю так, что при сортировке в DBGrid он сортирует не затрагивая ADOQuery и после этого резко уменьшается скорось выполнения кода описаного в п. [7]. Я не говорю о 10000, у меня 800 записей и это уже заметно ...


 
Плохиш   (2004-03-08 10:33) [13]

>Volodya_   (08.03.04 10:10) [12]
Ты не правильно понимаешь, DBGrid ничего не сортирует, он даже ничего не знает о данных, всё делает DataSet


 
jack128 ©   (2004-03-08 10:51) [14]


> Плохиш   (08.03.04 10:33) [13]

а разве датасет имеет методы для локальной сортировки?


 
Anatoly Podgoretsky ©   (2004-03-08 11:30) [15]

АДО может, к тому же некоторые постороннии гриды могут делать это локально, но за счет сильного пожирания ресурсов и скорости. Возможно этот DxDBGrid как раз из этой оперы. В этом случае смотреть Zacho ©   (07.03.04 23:05) [6]


 
Anatoly Podgoretsky ©   (2004-03-08 11:31) [16]

Только не "более шустрый сервер", а более шустрый клиент с несколькими гигабайт двухканальной памяти.


 
makz   (2004-03-09 04:05) [17]

У меня cxdbgrid - в приципе более тормозная штука чем dx. Но на паре тысяч записей вполне прилично работает, даже со своей сортировкой. Тормоза могут быть от вещей левых, например Lookup- поля без кэширования, "тяжелый" код в onCustomDrawCell и т.п. Проявляется это как раз после фетча всех записей, что нужно гриду для сортировки. Вообще можно присобачить свой код на сортировку - делать все датасетом  - будет гораздо быстрее.


 
stud ©   (2004-03-09 09:18) [18]

возможно у самого грида не все необходимые св-ва заполнены. у меня в этом гриде большие объемы нормально перевариваются. к тому же листание грида замедляет работу. елси например установить св-во автовысоты столбцов то замедление работы видно не на 800 а даже на 50 записях.



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

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

Наверх





Память: 0.49 MB
Время: 0.032 c
11-1058333717
IronWit
2003-07-16 09:35
2004.04.04
как открыть на редкатирование определенную ячейку в listview


14-1079055248
Думкин
2004-03-12 04:34
2004.04.04
С днем рождения! 12 марта.


14-1078833545
PVOzerski
2004-03-09 14:59
2004.04.04
Вот звуковая карточка досталась


1-1079089484
saska
2004-03-12 14:04
2004.04.04
про Мессаги


3-1078739618
Rustamus
2004-03-08 12:53
2004.04.04
Реализация БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский