SQL Serverは、行指向のデータベースです。これは、列指向データベースとは対照的です。これは、SQL Serverでは、特定の行のすべてのデータが一緒にディスクに保存されることを意味します。例を見てみましょう:
FirstName、MiddleInitial、LastNameの3つの列を持つCustomerテーブルがあるとします。次に、このテーブルにJabba T. Hutt、Dennis T. Menace、GeorgeW.Bushの3つのレコードがあるとします。
行指向のデータベース(SQL Serverなど)では、レコードは次のようにディスクに保存されます。
ジャバ、T、ハット; デニス、T、脅威; ジョージ、W、ブッシュ;
対照的に、列指向データベースは、次のようにレコードをディスクに保存します。
ジャバ、デニス、ジョージ; T、T、W; ハットメナス、ブッシュ;
行ではなく列がグループ化される場合。
これで、行指向データベース(SQL Serverなど)のテーブルに列を追加する場合、各列の新しいデータを既存の行と一緒に挿入する必要があり、多くの読み取り/書き込みが必要な行がシフトされますオペレーション。したがって、デフォルトで「Mr」になっている顧客プレフィックスの新しい列を挿入すると、次のようになります。
ジャバさん、Tさん、ハットさん。デニスさん、T、メナス。ジョージ、W、ブッシュ氏;
ご覧のとおり、元のデータはすべて右にシフトされています。一方、デフォルトでNULLになる新しい列を挿入する場合、既存の行に新しいデータを配置する必要はありません。したがって、シフトが少なくなり、必要なディスクの読み取り/書き込み操作が少なくなります。
もちろん、これは実際にディスク上で起こっていることを単純化しすぎています。インデックスやページなどを扱うときに考慮すべきことは他にもあります。しかし、それはあなたが全体像をつかむのに役立つはずです。
明確にするために、列指向のデータベースに移行することを提案しているわけではありません。行指向の意味を説明するために、その情報をそこに配置します。