帯域幅が非常に狭い回線を介して、さまざまなテーブルから大量のデータを取得する必要があります。あちこちに送信されるデータの量を最小限に抑える必要があります。
そちら側は Sybase データベースで、こちら側は SQL Server 2008 です。
必要なのは、このオフィスに関係するすべてのテーブルを Sybase データベースから取得することです。例として、次のテーブルがあるとします。
Farm
Tree
Branch
etc.
(1 つの農場には多くの木があり、1 つの木には多くの枝があるなど)
「Farm」テーブルに「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 にすべての計算を実行させ、結果を渡すだけにしてもらいたいのです。