[解決済み] クラスタ化インデックスは一意でなければならないのですか?
2023-04-23 03:26:31
質問
クラスタ化されたインデックスが一意でない場合、何が起こりますか? 挿入された行がある種の "オーバーフロー" ページに流れるため、パフォーマンスが低下する可能性がありますか?
一意にすることはできますか、そしてもしそうならどのようにしますか? また、その場合はどのように行いますか?
私は現在、クラスタ化インデックスを使用してテーブルを論理的な部分に分割していますが、パフォーマンスはあまり良くありません。 というアドバイスをもらいました。 を受け取りました。それについてセカンドオピニオンが欲しいのです。
どのように解決するのですか?
彼らは
を持つ
である必要はありませんが、確かにそれは推奨されます。
一意でないカラムにCIを作りたいというシナリオにはまだ遭遇したことがありません。
もし、あなたが 一意でないカラムにCIを作成する
クラスタ化されたインデックスがユニークインデックスでない場合 インデックスでない場合、SQL Server は重複する という内部的に生成された値を追加することで、重複するキーを一意にします。 と呼ばれる内部で生成される値を追加することで、重複するキーを一意にします。
これはパフォーマンスの悪化につながるのでしょうか?
を追加する
一意性
を追加すると、確かに計算と保存に多少のオーバーヘッドが生じます。
このオーバーヘッドが顕著になるかどうかは、いくつかの要因に依存します。
- テーブルが含むデータの量。
- 挿入の割合はどうなっているか。
- CIがselectで使用される頻度(カバーインデックスが存在しない場合、かなりの頻度で使用されます)。
Edit
コメントでRemusが指摘したように、ユニークでないCIを作成することが合理的な選択であるユースケースは存在します。
関連
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
plsql-stored-procedure ORA-06550 エラー処理
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] クラスター化インデックスと非クラスター化インデックスの実際の意味は何ですか?
-
[解決済み] NULLも許容するユニークな制約を作成するにはどうしたらいいですか?
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み】マルチインデックスとマルチカラムインデックスの比較
-
[解決済み】クラスタ化インデックスと非クラスタ化インデックスの違いは何ですか?
-
[解決済み] クラスター化 vs 非クラスター化
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] SQL Serverで実行中の合計を計算する
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] SQL ServerにおけるINSERT OR UPDATEに関する解決策
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] Postgres でサブクエリを使用してテーブルの行を更新する