私は主キー のデフォルトのインデックスをオフにするにはどうすればよい私は(ソート)すべての私のテーブルがインデックス化させたいいけないが、彼らはあなたがすることができ、主キー主キー - SQL2005
答えて
を持っている必要がありますプライマリキーインデックスをNONCLUSTERED
と定義して、プライマリキーに従ってテーブル行を並べ替えるのを防ぎますが、関連するインデックスを一切持たずにプライマリキーを定義することはできません。
SQL Serverがプライマリキーとユニークキーを実装する方法は、これらの列にインデックスを付けることです。したがって、索引なしで主キー(または一意制約)を持つことはできません。
これらのインデックスを実装するために非クラスタ化インデックスを使用するようにSQL Serverに指示します。テーブルにノンクラスタード・インデックスだけがある場合(またはインデックスがまったくない場合)は、ヒープがあります。これがあなたが実際に望んでいることはまれです。
テーブルにクラスタ化インデックスがあるというだけで、テーブルの行がこのようなインデックスで定義された「順序」で返されることは決してありません。つまり、行はです。通常注文は実装のクォークです。
そして、実際のコードは次のようになります。
CREATE TABLE T (
Column1 char(1) not null,
Column2 char(1) not null,
Column3 char(1) not null,
constraint PK_T PRIMARY KEY NONCLUSTERED (Column2,Column3)
)
テーブルは常にソートされていないされている - そこには「デフォルト」の順序がテーブル用ではなく、オプティマイザは、または1つの場合は、インデックスを使用することを選択しない場合があります存在する。
SQL Serverでは、キーを実装するためにインデックスが効果的に使用されます。クラスタ化インデックスと非クラスタ化インデックスのいずれかを選択できます。
「私のテーブルをすべて並べ替えるのは嫌だ」とはどういう意味ですか?列が入力された順序で表示されるようにするには、その順序を格納するフィールドを持つ(または多くのトランザクションがない場合は時間がかかる) 。その場合、最高のパフォーマンスを得るには、そのフィールドにクラスタード・インデックスを作成することが必要になります。
最大パフォーマンスを得るには、クラスタ化されていないPK(productIdなど)とautonumber_or_timestampフィールドにクラスタ化された一意のインデックスが存在する可能性があります。
しかし、それは本当にモデル化しようとしている現実にあります。あなたの質問にはこれに関する情報がほとんど含まれていません。 DB設計は抽象的ではない。
- 1. 主キー
- 2. 主キー
- 3. アップデートエラーが - 主キー
- 4. Sequelize belongsToMany主キー
- 5. インデックスと主キー
- 6. .NETCORE ID主キー
- 7. 主キーは
- 8. 複合主キー
- 9. アンドロイド - 主キー
- 10. 主キーとユーザーインターフェイス
- 11. 主キーUUIDトリガー
- 12. 主キーと外部キー
- 13. 主キーと外部キー?
- 14. 変更主キー、外部キー
- 15. C#20,000レコードSQL2005
- 16. ダイアレクトfor SQL2005
- 17. 主キー&クラスタ化インデックス
- 18. JPA主キー違反
- 19. SQL Serverの:主キー
- 20. 6データベースの主キー
- 21. 主キーが順序
- 22. 主キーの結合
- 23. Apache Sparkの主キー
- 24. フェニックスの主キーが
- 25. それは主キー
- 26. コードファースト - 主キー制約
- 27. 再起動主キー
- 28. ジャンゴRESTは、主キー
- 29. SQL:主キーにするか、主キーにしない?
- 30. Grails:主キーとしての外部キー?
インデックスなしでプライマリキーを定義することはできますが、実際はお勧めできません。 –
@Mitch Wheat - うーん...私はそれを知らなかった。暗黙的にインデックスを作成するのではなく、PK制約を作成するサンプル文を投稿できますか? –
@ミッチ小麦 - 私はかなりあなたができないと確信しています。インデックス構造は、SQL Serverが一意性プロパティをチェック/保持する方法です。 –