sql >> データベース >  >> RDS >> Sqlserver

SQLServerの統計の改善にご協力ください。

    ずっと前に、私はConnectダイジェストを公開していました。これは、もっと注目に値すると思ったConnectに関するいくつかのバグレポートや提案を強調した小さな投稿です。さて、私はこれを言います:SQL Serverチームはノイズを無視または延期し、最も重要で影響力のあるバグや提案。 しかし、それは彼らがレドモンドで行う方法ではありません 。それで、今日、私はリクエストがあります。これらの3つのConnectアイテムに投票してコメントすることで私を助けてください。これらはすべて、SQLServer統計の動作を改善することを目的としています。

    (コメントは単なる投票数よりもはるかに重要であることに注意してください。共有可能なビジネスケースがある場合は、ビジネスケースを明記してください。)

    UPDATESTATISTICSのMAXDOPヒント

    SQL Server 2016では、DBCC CHECKコマンド用のMAXDOPヒントが追加されています。統計情報を更新しないのはなぜですか?パーティション化されたテーブルでは、これは残りのワークロードに大きな影響を与える可能性があります。また、自動統計更新のためにシステム定義のMAXDOPをオーバーライドできるはずですが、今のところ、手動​​統計管理をより細かく制御できることに満足しています。リクエストは次の接続アイテムにキャプチャされます:

    • 接続#628971:統計の更新にMAXDOPパラメーターを追加

    クエリオプティマイザにパーティションレベルの統計を表示させる

    Erin Stellatoは、ここで増分統計の利点についてブログに書いていますが、この投稿でその問題について頭を悩ませています。増分統計はクエリオプティマイザーでは使用されません。それを読んでから、作成したばかりのアイテムに投票してコメントしてください(これには、DCRがまだ存在していないことに気づかなかったとは信じられません):

    • 接続#2010834:オプティマイザーは実際にはパーティションごとの統計を*使用*する必要があります

    自動統計では、フィルタリングされたインデックス/統計の行数を考慮する必要があります

    現在、フィルタリングされたインデックスと統計の自動更新に依存することは、ゴドーを待ちながらのようなものです。アルゴリズムは、インデックスの行数ではなく、チャーンしきい値を決定するときにテーブルの行数を使用します。これは、ほとんどのフィルタリングされたインデックス、そして実際に最も有用な フィルタされたインデックス–自動的に更新されることはありません。 (私はここでこれについて話します、そしてキンバリー・トリップはこことここでそれについて話します。他の人もそれについてブログに書いていると思います。)これは変わる時だと思います-同意するなら、ジョーサックのアイテムに投票してコメントしてください(タイトルはフィルタリングされた統計を示しますが、実際には両方に関連しています):

    • 接続#509638:フィルタリングされた統計更新への変更を提案する

    1. 修正方法「WITHRESULTSETS句で結果セットに2列が指定されたため、EXECUTEステートメントが失敗しました…」SQLServerのメッセージ11537

    2. select内で変数を定義し、同じselect内で使用します

    3. OracleEBS監査の設定方法

    4. SQLServerの上位100レコードを更新するにはどうすればよいですか