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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.071 c
15-1271955175
@!!ex
2010-04-22 20:52
2010.08.27
Помогите настроить UDP Port Forwarding.


15-1266561272
Kerk
2010-02-19 09:34
2010.08.27
Глобальное потепление


9-1187083638
Rave4Life
2007-08-14 13:27
2010.08.27
DirectDraw


2-1271764256
JohnKorsh
2010-04-20 15:50
2010.08.27
Почему методы Registry, работающие в XP не работают в Vista?


15-1270118822
Knight
2010-04-01 14:47
2010.08.27
Сервис и ADO





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