異なるクエリに基づいて、複数のテーブルのデータを表示する必要があるプログラムの一部があります。これまでのところ、それは次のようになります(後続のすべてのSELECTは、我々はAから得た何かに基づいていることに注意してください)その後複数のSQL SelectをC#で最適化
SELECT * FROM TABLE A WHERE ID = ...
SELECT [8 fields] FROM TABLE B WHERE ...
SELECT [5 fields] FROM TABLE C WHERE ...
SELECT [1 field] FROM TABLE D WHERE ...
SELECT [1 field] FROM TABLE E WHERE ...
SELECT [1 field] FROM TABLE F WHERE ...
SELECT [1 field] FROM TABLE G WHERE ...
SELECT [1 field] FROM TABLE H WHERE ...
SELECT [2 fields] FROM TABLE I WHERE ...
、私は結果を取得し、別のオブジェクトを作成したり、それらと異なるフィールドに入れます。 ボタンをクリックしてからウィンドウを表示するまでに、約2秒の遅延があります。 これは数百万のレコードを持つ非常に大きなデータベースです。残念ながら、DBの変更は問題になりません。 私はプライマリキーだけで検索しているので、それ以上の検索を制限する方法はありません。
接続は最初から開いていますが、各文の後には閉じたり開いたりしません。 表Aと表Bの結合には、2つの異なる選択よりも長く、最長で1.5秒、順次選択を実行すると約300msになります。 最初のクエリがDBMSで約53ミリ秒で実行されることを考えると、かなり長い時間がかかることがわかります。
私はC#、Net Framework 4でODBCドライバを使用していますが、データベース自体はDB2ですが、DB2ネイティブドライバを使用すると、私たちに多大な問題を与えてしまいました。
また、私はいくつかのフィールドだけを選択しても、それらを使って必要なオブジェクトを作成し、残りはデフォルトで残しています。
これを改善する方法はありますか? は、事前に アンドレイ
編集ありがとう:
--Two queries in another part of the program, we can ignore these, as they are not usually there-- 0.31 s
First query - 0.75 s
Second query - 0.87s
Third query - 0.95s
Fourth query - 0.99s
Fifth query - 1.00s
Sixth query - 1.04s
Seventh query - 1.08s
Eighth query - 1.10s
Ninth query - 1.12s
Program output - 1.81s
DBの変更が問題になっていると言えば、私はあなたがテーブル構造を変更することを意味していると思います。新しいインデックスを作成できますか? – Brad
@ブラッド、残念なことに、同じ製品の古いバージョンもDB上で動作し、すべてが元のままであることを前提としているため、DBを何らかの方法で変更することはできません。一般に、繰り返されなかったフィールドは主キーとして追加されました。 –