パフォーマンスと最適化の観点から:
- SQL Serverでテーブルを作成する場合、列をどのような順序で配置するかは重要ですか?
- 主キーが最初の列であるかどうかは重要ですか?
- マルチフィールドインデックスを作成する場合、列が隣接しているかどうかは重要ですか?
- ALTER TABLE構文を使用して、列を追加する位置を指定することはできますか?
- そうでない場合、どうすれば列を別の位置に移動できますか?
パフォーマンスと最適化の観点から:
SQL Server 2005 では、NULL 値を許容する可変長の列を配置すると、領域に影響を与えます。NULL 値を許容する可変長の列を定義の最後に配置すると、領域の消費を抑えることができます。
SQL Server 2008 では、この違いを無効にする "SPARSE" 列機能が追加されています。
ここを参照してください。
私のMS-SQLの経験はSQL2000にまで及んでいますが、これらすべての質問に対する答えはNOだと思います。SQL2005では別の話かもしれません
4番目の箇条書きの場合:いいえ、列を追加する場所を指定することはできません。ALTER TABLEの構文は次のとおりです:https ://msdn.microsoft.com/en-us/library/ms190273.aspx
MySQLでは、ALTER TABLE ADD ... AFTER ...を提供していますが、これはT-SQLには表示されません。
列を並べ替える場合は、テーブルを再構築する必要があります。
編集:最後の箇条書きについては、テーブルを削除して再作成し、列を並べ替える必要があります。SQLデータベースを操作するいくつかのグラフィカルツールはこれを行い、列を並べ替えているように見せるので、それを調べたいと思うかもしれません。
インデックスはデータを保持し、最後の1回も保持しないため、最初の3つはいいえ
最初の箇条書き:
はい、少なくとも非推奨の BLOB 、、またはを使用し、SQL Server <= 2005 を使用している場合、列の順序は重要です。image
text
ntext
そのような場合、それらの列をテーブルの「最後」に配置する必要があり、列を取得するたびにパフォーマンスが低下します。
DAL を使用してそのようなテーブルからデータを取得する場合、これは遅延読み込みパターンに最適な場所です。