私たちは、ユーザーがメモを入力できるようにするプライマリレコードを持っています。各プライマリレコードには18の個別の「メモ」フィールドがあります。SQL Server:varchar(MAX)を使用するか、別のノートテーブルを保持してINNERに参加する方が良いでしょうか?
現在、ID外部キー列と単一のvarchar(8000)列を持つNotesという別のテーブルに正規化してから、必要に応じてINNER JOINするだけです。
私は最近、varchar(MAX)を持つSQL Server 2008に移行しました。別のメモを取り除くとパフォーマンスが向上するかどうかは疑問に思っています代わりにvarchar(MAX)を使用してください。確かに便利だろう。
私の理解では、varchar(MAX)は実際のデータを別のページに保持し、実際のテーブルにその位置へのポインタしか保持しませんでした。言い換えれば、SQL Serverは私たちが手動で行っていたのと同じことを内部的に行っています。それは間違っていますか?すべての回答から、それは確かにそうであるように聞こえるが、私は明確にしたい。それは本当に私が疑問に思う質問です。 – msigman
いいえ。それは 'text'型がどのように働くのかということでした。 'varchar(max)'では、サイズが 'varchar' *の最大サイズ(8000)を超えた場合にのみ真です。最大サイズの中では、これは従来の方法で保存されます。 –
入手しました。ありがとう、私は今私は明らかだと信じています。現在設定されているままにしておきます。 – msigman