製品の手持ち在庫を一覧表示するテーブルを持つパーベイシブ (btrieve) データベース上にレガシー システムがあります。テーブルには 5,000,000 行以上ありますが、0 以外の値を持つ行は 115,000 行のみです。これらは、MSSQL データベースに抽出しようとしている行です。
ここで、通常、qty 列にインデックスを配置し、「」と言ってテーブルをwhere qty <> 0
調べますが、数量は 15 個の個別の列 (size1_stock、size2_stock など) にあります。
テーブル全体を選択する場合 (insert into 句を使用した MSSQL のリンク サーバーとして)、約 2.5 時間かかります。これにかかる時間を大幅に短縮する必要があります。
これらすべての列の合計 <> 0 を除いて、クエリに追加する必要がある他の述語はありません。
オプション:
- 5,000,000 行すべてを取得します (約 2.5 時間かかります - 実現不可能です)
- 次のような述語を追加します
where size1_stock + size2_stock .. <> 0
(実際にはそれほど速くはありません) - 15 列すべてにインデックスを追加します (これでうまくいくでしょうか?? おそらく移行日の前に行うことができますが、私が信じているインデックスを作成するには時間がかかりすぎます)
残念ながら、テーブルを消去することはできません。ベンダーは、これらのレコードを残す必要があると言っています。
どんなアドバイスも素晴らしいでしょう!