問題タブ [indexed-views]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - インデックス付きビューを使用した SQL Server での基本的なイベント ソーシング
SQL Server を使用して非常に基本的なイベント ソーシングを実装しようとしています。ライブラリも、他のサーバーも、特別なものもありません。SQL Server を使用する基本から始めてください。
次のテーブルがあるとします。
結果が次のようになるように、名前でグループ化された最新のデータを表示するビューを作成したいと思います。
簡単に、CREATE VIEW Latest AS SELECT t1.* FROM table t1 JOIN (SELECT TOP 1 Id FROM table ORDER BY CreatedOn DESC, Id DESC) t2 ON t2.Id = t1.Id;
これで、テーブルに何百万もの行があり、ビューで多数の同時読み取りが行われることになります。それで、インデックスを付けたいと思います(SQL Server Indexed Views)。インデックス付きビューには派生テーブルまたは TOP OR MAX OR 自己結合を含めることができないため、ここでは運が悪いようです。
インデックス付きビューを作成する方法について何か考えはありますか?
それが不可能な場合は、テーブル内の IsLatest BIT 列を更新する INSTEAD OF トリガーを使用し、このフィルターに基づいてインデックス付きビューを作成できます。
他の提案はありますか?
sql - いくつかの子行の要約を含む Sql Server インデックスを作成できますか?
Sql Server 2016 で、単純な親子関係を要約するインデックス付きビュー (または同等のもの) を作成することは可能ですか?
例えば:
そして、このような結果..例:
これを SQL クエリとして記述した場合は、次のようになります (これはインデックスが作成されておらず、回答全体を「計算」する必要があると想定しています)。
「INDEXED」ビューを求めている理由は、計算がディスクに保存されていると想定しているため、結果を計算するのではなく、インデックスをスキャンして結果を取得するだけでよいからです。実行。
上記の例も悔やまれます(この質問の場合)。実際には、より大きなテーブル構造などがあります。
インデックス付きビューに特定のキーワードを含めることができないことは理解しています( @brentozar がブログ投稿でCOUNT
述べたように) 。
私はこの問題を間違った方法で見ていますか? ここでは、SQL キャッシングについてはあまり回答したくありません。
(注: 多分私は別の NoSql db で多くの Map/Reduce クエリを実行してきました:))
sql-server - varchar(120) でクラスター化されたインデックス キーの長さの警告?
だから今日、いくつかのインデックス付きビューなどを作成する最適化を行っていて、この警告に出くわしました
警告!クラスター化インデックスの最大キー長は 900 バイトです。インデックス 'IX_...' の最大長は 8004 バイトです。大きな値の組み合わせによっては、挿入/更新操作が失敗します。
インデックスは
ビューは
ID は INT です
物理テーブルの aField は VARCHAR(120) です
したがって、インデックスの最大キー長は 120+4 バイトになるのではないでしょうか?
この警告が表示されるのはなぜですか?
有効ですか?