Мне нужно вывести большое количество данных из различных таблиц по линии с очень низкой пропускной способностью. Мне нужно свести к минимуму объем данных, которые отправляются тоже и сюда.
На этой стороне находится база данных Sybase, на этой стороне SQL Server 2008.
Мне нужно извлечь все таблицы из базы данных Sybase, которые связаны с этим офисом. Допустим, у меня есть следующие таблицы в качестве примера:
Farm
Tree
Branch
etc.
(на одной ферме много деревьев, на одном дереве много ветвей и т. Д.)
Допустим, в таблице «Ферма» есть поле с именем «CountryID», и мне нужны только данные, для которых CountryID = 12. Фактические структуры таблиц, которые я рассматриваю, очень сложны (и я также не очень хорошо с ними знаком), поэтому я хочу постараться сделать запросы простыми.
Итак, я думаю о настройке серии представлений:
CREATE VIEW vw_Farm AS
SELECT * from Farm where CountryID=12
CREATE VIEW vw_Tree AS
SELECT * from Tree where FarmID in (SELECT FarmID FROM vw_Farm)
CREATE VIEW vw_Branch AS
SELECT * from Tree where BranchID in (SELECT BranchID FROM vw_Branch)
и т.д.
Чтобы затем перенаправить фактические данные, я бы сделал:
SELECT * from vw_Farm into localDb.Farm
SELECT * from vw_Tree into localDb.Tree
SELECT * from vw_Branch into localDb.Branch
и т.д.
Достаточно просто настроить. Мне интересно, как это будет работать, хотя? Будет ли он выполнять все операторы SELECT на стороне Sybase, а затем просто отправит обратно результат? Кроме того, поскольку это будет итеративный процесс, возможно ли индексировать представления для последующих вызовов?
Любые другие предложения по оптимизации также приветствуются!
Спасибо
Karl
РЕДАКТИРОВАТЬ: просто чтобы уточнить, представления будут настроены в SQL Server. Я использую связанный сервер, использующий Sybase ASE для настройки этих представлений. Что меня особенно беспокоит, так это то, будет ли тот факт, что представление находится в SQL Server на этой стороне, а не на Sybase на этой стороне, будет означать, что для каждой итерации данные из предыдущего представления будут переданы в SQL Server в первую очередь перед вычислениями быть казненным. Я хочу, чтобы Sybase выполнил все проверки и просто передал результаты.