我需要通过一条带宽非常低的线路从各种表中提取大量数据。我需要尽量减少来回发送的数据量。
那边是 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
等等
设置起来很简单。我想知道这将如何执行?它会在 Sybase 端执行所有 SELECT 语句,然后只发回结果吗?此外,由于这将是一个迭代过程,是否可以为后续调用索引视图?
任何其他优化建议也将受到欢迎!
谢谢卡尔
_
编辑:为了澄清,视图将在 SQL Server 中设置。我正在使用使用 Sybase ASE 的链接服务器来设置这些视图。特别让我担心的是,视图在这一侧的 SQL Server 中而不是在另一侧的 Sybase 上这一事实是否意味着对于每次迭代,来自前一个视图的数据将在计算之前首先被拉到 SQL Server被执行。我希望 Sybase 完成所有计算并传递结果。