2017-07-14 7 views
0

私はテーブルを持っています顧客は701の属性(列)に何百万ものレコードを持っています。 1行700列のcsvファイルを受け取ります。今、これらの700列の値に基づいて、私はテーブルからIDを抽出する必要がありますお客様select queryをより効率的にするには?

ここで私はどこの節でも700の値を持つ選択クエリを実行することが明らかです。

私の質問は、where句で1つの属性のみを使用して小さなテーブルをフェッチし、次にwhere句の2番目の属性に基づいて再度フェッチし、すべての属性に対してこのプロセスを繰り返すと、もっと早く ? それをもっと速くする方法があれば教えてください。

+0

使用しているSQLデータベースのバージョンは何ですか? – VKarthik

答えて

0

これらの700属性の論理を理解しようとします。属性の数をもっと「現実的」に減らすのに役立つ可能性のある依存関係が存在する可能性があります。

私は同じテクニックを使用して、メインテーブルのインデックスから利益を得るより小さいクエリを実行できるかどうかを確認します。テンポラリテーブルに結果を格納するたびに(tmpテーブルの数や行数を減らす)、次のステップのテンポラリテーブルにインデックスを付けて、最終結果が出るまで再度実行します。 例:日付属性がある場合:年、曜日などのすべてのレコードを分離しようとします。

より小さいtmpテーブルに対して実行されるように、複雑な要求を保持してください。

+0

シーン1すべての属性を1つのwhere節に使用します。シーン2まずwhere句に1つの属性を使用して小さなテーブルを取得し、このプロセスを700の属性に対して繰り返します。どれが速くなるでしょうか? – Desperado

+0

私はあなたのサーバー構成を知らないが、#2はクラッシュしないものと思われる。 –

+0

数百万の行に700の属性を持つWhere句を実行することは実行可能ではありません –

関連する問題