Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

ZQuery1AfterScroll работает долго   Найти похожие ветки 

 
lamer6666 ©   (2010-02-15 21:15) [0]

Доброго времени суток уважаемые.
На форме два ZQuery и два DbGridEh.
В первый (ЗАПРОС1)ГРИД загружаю список пользователей, во второй (ЗАПРОС2)ГРИД нужно загрузить список сообщений пользователя (который на данный момент отражен в первом ГРИДе)

Для этих целей использую ZQuery1AfterScroll первого запроса, где выбираю все сообщения в ZQuery2.

Но все очень медленно работает, количество сообщений для каждого пользователя не более двух, но выборка в первый ZQuery1 происходит сравнительно долго.
Прошу помощи, такое впечатление, что для каждой записи ZQuery1 еще при отборе (до отражения в ГРИДе) отбираются и сообщения для каждой выбранной строки в ZQuery1.

Прошу помощи, уважаемые.


 
KilkennyCat ©   (2010-02-15 22:49) [1]


> ZQuery1AfterScroll

с какого перепугу?

> сравнительно долго.

сравнительно с чем? с миллиардом записей? с десятью?

> Прошу помощи

продумай алгоритм действий.


 
Игорь Шевченко ©   (2010-02-15 23:27) [2]


> В первый (ЗАПРОС1)ГРИД загружаю список пользователей, во
> второй (ЗАПРОС2)ГРИД нужно загрузить список сообщений пользователя
> (который на данный момент отражен в первом ГРИДе)


а у ZQuery свойства DataSource нету ? Через которое обычно отношение Master-Detail реализуется


 
Sergey13 ©   (2010-02-16 10:19) [3]

> [0] lamer6666 ©   (15.02.10 21:15)

Как обычно. СУБД, структура БД, тексты запросов и код обработчиков нужно выдирать под пыткой.


 
lamer6666 ©   (2010-02-16 13:14) [4]


> с какого перепугу?

просто не владею знаниями в достаточной степени, пробежался по списку событий ZQuery1 и решил что AfterScroll событие наступающее "ПОСЛЕ СМЕНЫ ЗАПИСИ" как раз то что надо (меняется текущая запись в верхнем ГРИДе - меняются сообщения в нижнем ГРИДе соответствующие каждой записи верхнего ГРИДа)


>сравнительно с чем? с миллиардом записей? с десятью?

Ну если не использую свойство AfterScroll, отражение в верхнем ГРИДе происходит моментально.


procedure TForm8.ZQuery1AfterScroll(DataSet: TDataSet);
begin
 ZQuery2.Close;
 if not ZQuery1.IsEmpty then
 begin
 ZQuery2.SQL.Text:=" SELECT * "+
 " (SELECT ... FROM .... WHERE ... =....  LIMIT 1)msgkindename "+
 " FROM table2  "+
 " WHERE  table2_table1_id="+ZQuery1.FieldByName("table1_id").AsString+
 " ORDER BY table2_date";
 try ZQuery2.Open;
   except ShowMessage("Не удаеться отобразить сообщения!");exit; end;
 end;
end;

В ПОДSELECT-е выбираю наименования типа сообщения в место кода.

СУБД mySQL

Структура:
Таблица1 (table1_id, table1_user)

Таблица2 (table2_id, table2_table1_id, table2_msg, table2_date, table2_msg_type_id)

Таблицы связанны между собой table1<->table1_id<->table2_table1_id<->table2 связью одни ко многим соответственно.


 
Sergey13 ©   (2010-02-16 14:42) [5]

> [4] lamer6666 ©   (16.02.10 13:14)
> В ПОДSELECT-е выбираю наименования типа сообщения в место кода.

Запрос в подселекте разумеется секретный? Зачем он вообще? Почему просто не сджоинить справочник с Тable2?
Без подзапроса быстро работает?
Почему бы не заменить запрос на динамический с параметрами?


 
lamer6666 ©   (2010-02-16 19:03) [6]


> Без подзапроса быстро работает?

Так же.

> Почему бы не заменить запрос на динамический с параметрами?

Если не затруднит, можно подробнее?

Спасибо


 
Sergey13 ©   (2010-02-17 10:08) [7]

> [6] lamer6666 ©   (16.02.10 19:03)
> Так же.

Значит индексов скорее всего нет на table2_table1_id.

> Если не затруднит, можно подробнее?

WHERE  table2_table1_id=:table2_table1_id


 
lamer6666 ©   (2010-02-17 11:58) [8]


> WHERE  table2_table1_id=:table2_table1_id

Спасибо, уважаемый Sergey13, пробую.



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

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.093 c
15-1274332956
Медвежонок Пятачок
2010-05-20 09:22
2010.08.27
Пример как не надо программаровать


2-1273221089
Savek
2010-05-07 12:31
2010.08.27
Объединение таблиц из раных баз


8-1205337835
Ramzes001
2008-03-12 19:03
2010.08.27
Запрет смены пропорций у фото


15-1274041793
Юрий
2010-05-17 00:29
2010.08.27
С днем рождения ! 17 мая 2010 понедельник


2-1266912051
serko
2010-02-23 11:00
2010.08.27
Как скопировать текст из другого приложения?