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

Вниз

TDataSetProvider   Найти похожие ветки 

 
Yan   (2003-05-26 00:52) [0]

Есть такая проблемма: имеется некоторое клиентское приложение на котором расоложены TClientDataSet ы, которые посредством TDataSetProvidera имеют доступ к некоторым таблицам. Если в таблицах там больше ста полей больше 1000 записей то загрузка данных с сервера занимает примерно 24 сек, на 3-м пне (900Мгц). Штуки с PacketRecords не подходят. Есть варианты как можно ускорить процесс передачи данных?


 
Digitman   (2003-05-26 09:29) [1]


> Есть варианты как можно ускорить процесс передачи данных?


Оптимизируй запрос, возвращающий клиенту набор данных. Тот самый, что использует TDataSetProvider. Возможно, в БД следует либо создать необходимые индексы либо посторить SQL-выражение таким образом, чтобы оно задействовало уже существующие (нужные в контексте запроса) индексы.

А TClientDataSet здесь, скорей всего, ни при чем.


 
Vassiliy   (2003-05-27 09:09) [2]

Какие у Вас компоненты доступа к БД? Используете ли Вы связь Master-Detail?


 
Yan   (2003-05-27 19:43) [3]

Индексы в интеребейсе по длинным текстовым полям не построишь. Дело в том, что запрос сам по себе на сервере выполняется 2 сек. я проверял. Но вот процесс передачи очень долгий почему-то. Я вообщем то нашел выход. Сделал еще одного провайдера и запрос, который вибираетт записи по 3-м четырем полям, грузится гораздо быстрее. Но дрежать вда провадейра как-то не охота. Проблемма именно со скоростью передачи данный от провайдера к клиентдатасету.


 
Zacho   (2003-05-27 20:11) [4]


> Yan (27.05.03 19:43)
> Индексы в интеребейсе по длинным текстовым полям не построишь.
> Дело в том, что запрос сам по себе на сервере выполняется
> 2 сек. я проверял. Но вот процесс передачи очень долгий
> почему-то.

До хрена данных передается, потому и долгий. И будь у тебя хоть Оракл, хоть DB2 - но если резалтсет большой - будет он долгий. И дело тут не в тактовой частоте процессора. Оптимизируй запрос. Выбирай столько записей, сколько реально нужно, не больше. Все равно юзер не сможет нормально работать с гридом с несколькими тысячью записей.


 
Yan   (2003-05-27 23:09) [5]

Ок. А что тогда делать если к этому гриду прикручен поиск и главное и есть случаи, когда надо искать среди всех записей?


 
Zacho   (2003-05-27 23:24) [6]


> Yan (27.05.03 23:09)

Делать поиск другим способом. Как именно - зависит от особенностей задачи.
Например, для поиска по всем записям - отдельная форма. И сначало SELECT COUNT .. Если кол-во записей больше нескольких десятков (в крайнем случае - сотен, хотя уже со 100 записями в гриде работать крайне неудобно) - пусть пользователь уточнит параметры поиска. А если хочет видеть охрененное кол-во записей - то он ССЗБ (Сам Себе Злобный Буратино) и пусть ждет, пока они все зафетчатся на клиента.


 
Yan   (2003-05-28 01:18) [7]

Zacho © : А че, это мысль :)


 
Zacho   (2003-05-28 01:40) [8]


> Yan (28.05.03 01:18)

Это только один из множества вариантов. Все зависит от задачи. Главное - спроектировать приложение так, что бы на клиента выбиралось минимум записей. Точнее, чтобы интерфейс к этому распологал :-) Но, как известно, можно сделать защиту от дурака, но изобретательный дурак всегда сможет ее обойти :-) Но если это будет оговорено в инструкции, а пользователь возмущен медленной работой приложения - то он ССЗБ


 
Danilka   (2003-05-28 07:44) [9]

Судя по всему, надо оптимизировать не только кол-во записей, но и кол-во полей: "больше ста полей" - это круто! только реально юзеру не нужно.
В гриде ему наврядли нужно больше 2-6 полей, а остальное он может получить открыв интересующую запись в отдельной форме.



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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
14-60379
Za-aDa
2003-06-02 23:42
2003.06.19
Классы в Delphi


3-60050
Alex_x
2003-05-27 16:43
2003.06.19
Нужна компонента для программного созднания Dbf (без BDE)


6-60297
kopcap
2003-04-10 07:20
2003.06.19
Пожалуйста обьясните в чем разница в сокетах


14-60333
Начинающий_
2003-06-02 05:21
2003.06.19
Срочно алгоритм сортировки списка


9-60007
Tankist
2002-12-12 11:48
2003.06.19
из точку в точку по прямой.





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