簡単なクエリ調整の質問があります。
次の定義を持つビューのパフォーマンスを改善できますか
SELECT * FROM A
UNION ALL
SELECT * FROM B
これはパフォーマンスが非常に悪いため、6.5k レコードに 12 秒かかっています。
どんな助けでも大歓迎です。
簡単なクエリ調整の質問があります。
次の定義を持つビューのパフォーマンスを改善できますか
SELECT * FROM A
UNION ALL
SELECT * FROM B
これはパフォーマンスが非常に悪いため、6.5k レコードに 12 秒かかっています。
どんな助けでも大歓迎です。
これら2つを同じテーブルに入れないようにする理由はありますか?何をしても、最終的には恐ろしいことになります. 可能であれば、1 つのテーブルへの移行を検討してください。そうでない場合は、それらをすべて同じものに挿入することで、いつでも「ビューを具体化」できます。
そうは言っても、ユニオンで * を選択するつもりはありません。ビューの上に特定の条件がある場合、その列にインデックスを付けることでパフォーマンスを向上させることができます。
これがどの特定のデータベース用であるかを全員に伝えると役立ちます。
私の最善のアドバイスは、ソース テーブルから返されるレコードの数またはレコードを本当に必要なものだけに制限し、データが適切にインデックス付けされていることを確認することです。
アドホック スクリプトでない限り、* は使用しないでください (それでも、列を一覧表示する方がよいでしょう) 目の前のタスクに本当に必要な列のみが含まれます。
最も頻繁に使用されるクエリに基づいて適切なインデックスを使用します。未使用のインデックスを削除します。重複するインデックスを削除します。
Pluralsight には、MS SQL Server のクエリ パフォーマンス チューニングに関する素晴らしいコースがあります。 http://www.pluralsight.com/training/Courses/TableOfContents/query-tuning-introduction
このコースは、2 人の非常に優秀な個人である Vinod Kumar と Pinal Dave によって提供されます。
SQL Server のパフォーマンスに関する Pinal の記事をチェックして、考えもしなかった領域を指摘することもできます。