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

Вниз

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

 
Соловьев ©   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
6-1082630555
Breeze1
2004-04-22 14:42
2004.06.13
Получить имя компьютера в интернете по его IP


1-1085905033
ilnarab
2004-05-30 12:17
2004.06.13
С помощью OpenDialog-а открыть папку


6-1082642467
dark2004
2004-04-22 18:01
2004.06.13
Помогите органиовать поддержку Perl на моем Webсервере


6-1082227954
IXT
2004-04-17 22:52
2004.06.13
Наличие входящего подключения.


3-1085052874
Mishgan
2004-05-20 15:34
2004.06.13
Checkbox в DbgridEH !!! Помогите





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