私は基本的にデータベース(Microsoft SQL Server 2008)からデータを抽出することに関するビジネス用の課題を持っています。このプロセスでは、ユーザーは選択する列を選択し、選択するビューを選択してWHERE句を作成することができます。ユーザーが選択した内容に基づいて、SQLクエリーが作成されます。要件は、ユーザーがANYビューからANY列を選択し、WHERE節のANY列でフィルターすることです。同社はデータウェアハウス/ OLAPを使用するソリューションを望んでおらず、サードパーティのソフトウェアを制限したいと考えています。だから基本的には、GUIに基づいてSQLクエリを動的に構築し、データベースに接続する.NET Windowsフォームアプリケーションがほしいだけです。動的クエリの最適化
私の関心事は、クエリを最適化する方法です。私はまだSQLクエリを最適化することは決してできませんが、最初の考えは、ユーザーがインデックスのない列(WHERE句内)でフィルタリングすることを選択した場合です。ユーザーに非常に高い柔軟性を与えることで、実行に時間がかかるような効果のないクエリを構築する可能性があります。
インデックスを持たない列にフィルタをかけるとパフォーマンスが向上することはありませんが、改善するために何かできることはありますか?確かに、私はすべての列にインデックスを追加するだけではありません。
私は必ずしもクエリの最適化を探しているわけではありませんが、キャッシングなどのサーバーの調整がある場合は、私も考えていますか?基本的に私はすべての耳で、パフォーマンスを改善する助けとなるアドバイスを探しています。
提案がありますか?
ありがとうございます!
これは、列ストア索引が役立つはずのシナリオの1つです(次のバージョンまでは使用できません)。あなたはDWを使用しないことによって何を意味するか分かりません。これは同時データ変更の対象となるOLTPデータベースを照会しているため、索引を追加するのが嫌ですか? –
はい、多くの場合、データベースは他の多くのものに使用されるOLTPデータベースではありません。したがって、多くのインデックスを追加すると、挿入/更新が大幅に遅くなります。 – Andy0708
明らかなハードウェアのアップグレードを除けば、その仕様に基づいてできることはたくさんあります。パフォーマンスはおそらく吸うでしょう。なぜ彼らはこれに対してOLAP/DWを割り引いたのですか? –