тормоза при просмотре списка в DBGrid

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Axelus
Сообщения: 8
Зарегистрирован: 07 сен 2006, 16:53

тормоза при просмотре списка в DBGrid

Сообщение Axelus » 15 сен 2006, 15:09

Уважаемые господа!

В моей базе данных две таблицы: clients и access. Первая содержит перечень клиентов и данные клиентов. Вторая - таблица доступа по принципу Номер_клиента - Номер_пользователя.

При отображении таблицы клиентов в DBGrid (select * from clients) мне требуется определить, есть ли доступ к этому клиенту или нет. В зависимости от наличия доступа строка Грида должна отображаться по разному.

Но при этом мне приходится при прорисовке таблицы делать SQL-запрос на каждую строчку. В результате при прорисовке Грида наблюдаются тормоза.

Если кто сталкивался с подобной задачей - не поделитесь опытом, как правильно организовать отслеживание доступа?

Буду благодарен за любую помощь!

Karp
Сообщения: 41
Зарегистрирован: 30 апр 2005, 16:30

Сообщение Karp » 15 сен 2006, 15:51


WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 15 сен 2006, 16:30

С задачей как ускорить запрос при прорисовке каждой строки грида тут точно никто не сталкивался. Ибо мы себе таких сверхзадач не ставим :lol:
Пусть в гриде у тебя будет невидимое юзеру поле (join'ом ты его туда прилепишь или ещё как - неважно) от значения которого и будет зависеть прорисовка текущей строки.

Фанис
Сообщения: 17
Зарегистрирован: 16 июн 2005, 19:28

Re: тормоза при просмотре списка в DBGrid

Сообщение Фанис » 17 сен 2006, 12:23

Axelus писал(а): Но при этом мне приходится при прорисовке таблицы делать SQL-запрос на каждую строчку. В результате при прорисовке Грида наблюдаются тормоза.
Про join тебе отписали выше - все это можно реализовать в query.sql. Есть еще один вариант - прописать в ХП - здесь выборку можно контролировать дополнительными параметрами. Последний вариант предпочтительней по причине удобства корректировки только сервера - если, конечно, хорошо проработана логика.

Axelus
Сообщения: 8
Зарегистрирован: 07 сен 2006, 16:53

Сообщение Axelus » 20 сен 2006, 13:00

Спасибо за помощь!
Я воспользовался методом JOIN - все получилось как надо. И довольно быстро :)

Ответить