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

Вниз

Тормозит АДО   Найти похожие ветки 

 
Соловьев ©   (2004-05-25 10:53) [0]

Использую связку мастер-детайл-субдетайл:

мастер TADODataSet
select * from city
Prepered = true

детайл TADODataSet
select * from city
Prepered = true

субдетайл TADOQuery
select * from distance where fk_city_x = :id_x and fk_city_y= :id_y
Prepered = true

Записей в мастере 15. Я бегусь по ним в цыкле while not Eof, в теле цыкла открываю детайл. А тут еще один цыкл - тут уже срабатывает запрос субдетайла. Результат запроса заношу в StringGrid - это я трою матрицу расстояний между городами. Весь процесс занимает порядка минуты. Неужели АДО такой тормознутый?  OS - W2kSp4


 
Соловьев ©   (2004-05-25 13:07) [1]

Забыл, СУБД - Access 97
P.S. что с форумом :(


 
Соловьев ©   (2004-05-25 13:52) [2]

Еще, тачка - Celleron 700, 256 MB
Мож кто сталкивался?


 
Rouse_ ©   (2004-05-25 14:07) [3]

Курсор поставь серверный и
TADOTable(TADOQuery).TableDirect := True;

мне во всяком случае помогло.
Еще как вариант после выполнения Query передаю результат в таблицу и работаю уже через нее, намного быстрее
ADOTable.RecordSet := ADOQuery.RecordSet;


 
sniknik ©   (2004-05-25 14:11) [4]

посчитай сколько раз перезапросы происходят, и сколько времени на один тратится, удивление и пройдет.

мастер и детайл одна таблица? это правильно?

сделай индексы по полям fk_city_x, fk_city_y время уменьшится даже в том виде что сейчас (если конечно этих индексов счас нет).
зачем такие сложности, множественные прогоны, нельзя сделать в 1 запрос?


 
Соловьев ©   (2004-05-25 14:23) [5]


> Курсор поставь серверный и
> TADOTable(TADOQuery).TableDirect := True;

делал - тот же результат :(


> мастер и детайл одна таблица? это правильно?

да надо постоить матрицу растояний где по Х и Y - названия городов, а ячейки - растояния между ними


> сделай индексы по полям fk_city_x, fk_city_y время уменьшится
> даже в том виде что сейчас (если конечно этих индексов счас
> нет).

сразу сделал


> зачем такие сложности, множественные прогоны, нельзя сделать
> в 1 запрос?

как?


 
sniknik ©   (2004-05-25 14:41) [6]

> как?
а я знаю? как оно там у тебя считается, и что в данных. в общем,... ну там делаеш связки (JOIN), подзапросы, агрегатныеми функциями... так чтобы в запросе только результат передавать (то что в стринг грид пишеш). тогда будет быстро.
а счас у тебя на открытие одной строки мастера куча перезапросов, и самого себя что опять вызывает перезапросы субдетайл... (не так?)

еще, почему
> СУБД - Access 97? а не 2000/XP? 97 устаревший и глючный формат.
и как связь идет? ADO это да понятно, но движок?


 
Соловьев ©   (2004-05-25 15:12) [7]


> а я знаю? как оно там у тебя считается, и что в данных.
> в общем,... ну там делаеш связки (JOIN), подзапросы, агрегатныеми
> функциями... так чтобы в запросе только результат передавать
> (то что в стринг грид пишеш). тогда будет быстро.

2 таблицы

1-я
id-код города
name - имя города

2-я
fk_city_x - код города по х
fk_city_y - код города по y
distance - растояние

надо получить таблицу вида матрицы X на Y - где X=Y= количество городов
а в ячейках расстояние от X до Y
Вот и все - как можно это в один запрос впиндюрить?
На ФБ - хранимой бы процедурой, а тут?


> и как связь идет? ADO это да понятно, но движок?

Microsoft.Jet.OLEDB.4.0
почему Access97 -? Просто дома такой офис стоит... А там тачка послабее чтобы офис ХР ставить...


 
Sandman25+1   (2004-05-25 15:20) [8]

Можно попробовать
select X.name, Y.name, D.distance
 from city X, city Y, dist D
 where D.fk_city_x=X.id
   and D.fk.city_y=Y.id

А потом пробежаться по датасету и присвоить соответствующие ячейки грида


 
Соловьев ©   (2004-05-25 15:55) [9]


> [8] Sandman25+1   (25.05.04 15:20)

Да, так лучше :) Сенькс
Что-то у меня голова не варит...


 
Sandman25+1   (2004-05-25 15:59) [10]

Неправда, очень даже варит...
У любого человека иногда может случиться так, что сложное решение закроет собой простое.



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

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

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1085399793
Orion2
2004-05-24 15:56
2004.06.13
Красное небо


14-1085504090
Ilya__
2004-05-25 20:54
2004.06.13
Можно ли так делать ?


14-1085594952
ikivio
2004-05-26 22:09
2004.06.13
Ищу, в санкт Петербурге, программиста-сообщника ( временно безраб


3-1084960375
Kein
2004-05-19 13:52
2004.06.13
Как создать базу с DEFAULT CHARACTER SET WIN1251


1-1084984795
ceval
2004-05-19 20:39
2004.06.13
Подскажите как сделать чтобы в ComboBox се отбражалось одн