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

Вниз

В одном запросе несколько баз ...   Найти похожие ветки 

 
korvin ©   (2005-01-29 12:50) [0]

Можно ли использовать в одном запросе поля таблиц из разных баз данных? Есть поля по которым можно было бы установить связь и конечно нет проблем если таблицы в одной базе, а как поступить в данном случае?
Если есть возможность, приведите пожалуйста пример в общем виде.


 
Alexandr ©   (2005-01-29 12:58) [1]

нельзя.
Только собирать результирующую таблицу на клиенте.
Вот в BDE есть возможности для этого.
Но BDE в данном случае естественно убдет на клиентя тянуть таблицы целиком, даже если реально надо всего пару записей.
Аналогично делают например Access или даже MSSQL.


 
korvin ©   (2005-01-29 13:32) [2]

Спасибо за ответ, хоть он меня и не радует.
Буду создавать сборную как советуете.


 
Alexandr ©   (2005-01-29 13:56) [3]

это самый правильный вариант, раз уж действительно так надо.
И транзакциями управлять сможешь, и на сервер посылать сразу правильный запрос смоше, чтоб не тянуть все таблицы.


 
Anatoly Podgoretsky ©   (2005-01-29 14:16) [4]

Alexandr ©   (29.01.05 12:58) [1]
Сам придумал "Но BDE в данном случае естественно убдет на клиентя тянуть таблицы целиком"


 
Alexandr ©   (2005-01-29 14:21) [5]

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


 
Anatoly Podgoretsky ©   (2005-01-29 14:52) [6]

Очень просто раскрутит, например select :alias1:Tbl1.Fld1 AS T1, :alias2:Tbl2.Fld1 AS T2 where T1.Fld1=T2.Fld1


 
Alexandr ©   (2005-01-29 15:00) [7]


> alias1:Tbl1.Fld1 AS T1, :alias2:Tbl2.Fld1 AS T2 where T1.Fld1=T2.Fld1


не... мы как будто про разное говорим...
у него же базы клиент-серверные и можно ожидать выполнеия запроса в каждую базу и локального объединения результата запросов. Однако BDE не будет использовать сервер для такого объединения, а объединит своим движком, а свой движок у него только с файловыми базами работает.
Значит он вытянет обе таблицы целиком и сам уже потом безовсяких индексов будет объединять их своим движком.

А чтобы как-то распараллелить запрос по максимуму на серверы и потом только собрать из 2 ограниченных выборок результат, это надо очень серьезную логику. И в BDE оно не укладывается.


 
Anatoly Podgoretsky ©   (2005-01-29 15:11) [8]

Вот именно запрос в каждую базу, а не перекачивание всей таблицы, как ты утверждал. На каждую T1 будут вытянута только те записи, которые нужны, с тем же ИД, а не вся таблица. Точно также будет и для одной базы. И насчет сервера обязательно будет его использовать, не умеет БДЕ работать напряму с файлами Интербейс, да его никто и не пустить к этим файлам. Ты не путай с файл серверными базами. Примерно это будет выглядеть так, для второй таблицы будет выполнен такой запрос SELECT FROM T2 WHERE fLD1 = значение из T1, никаких всех данных не потянет. Объединение конечно будет произведено локально.


 
Alexandr ©   (2005-01-29 15:20) [9]

хм... ну мож такой запрос развернет еще.
Но если чуть посложнее?


 
Rule ©   (2005-01-29 15:24) [10]

по этому поводу хорошая статья есть

http://ibase.ru/devinfo/bde.htm


 
Alexandr ©   (2005-01-29 15:31) [11]

точно. Помню же, где читал на этот счет.
А вывод тут  такой, что как в конкретном случае BDE выполнит запрос известно только BDE. И далеко не всегда это будет более-менее оптимально.
А локальный SQL у него достаточно примитивен.
Поэтому уж проще самому формировать.


 
Rule ©   (2005-01-29 15:36) [12]

Alexandr ©   (29.01.05 15:31) [11]
именно так, поэтому в данном случае оптимальный вариант - это программными методаим обходить эту проблемму, а вообще не должно возникать таких ситуаций, а если возникла, значит что-то неправильно спроектировано изначально ... ИМХО конечно ...



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
9-1091205588
Evgeniy_K
2004-07-30 20:39
2005.02.27
DD and Color


14-1107500752
Zhekson
2005-02-04 10:05
2005.02.27
время ожидания Scandisk_а в XP


6-1103178655
DelphiN!
2004-12-16 09:30
2005.02.27
Передача файла по сети размером более 1 ГБ


1-1108133125
bloodman
2005-02-11 17:45
2005.02.27
Как нужно удалять TwebBrowser ?


3-1107182429
MakedoneZ
2005-01-31 17:40
2005.02.27
Почему появляется ошибка "Dataset not in edit or inser mode"