2013/01/05

Access 2010 / 2013 集計フィールド / Calculated Fields - 2 -

で、どんな時に使うと効果的か。
 テーブルに収めるロジックなのだから、基本的に変更されることがないロジックであるべきなのだろう。たとえば、[数量] * [単価] で [金額] 的なことだけど、該当のレコードが頻繁に更新されるものでなければよいということ。といっても、レコード数とマシンスペック次第だから選択は "お好みで"。きっと、ほとんど参照のみのテーブルに使うと効果はでやすいはず。
 MSのサンプルでも使われているけれども、名簿要素なテーブルに使うイメージがとても強い。[姓] & " " & [名] とか。MSのサンプルだといろんなフィールドを結合して検索用にしてあるよね。この場合、フィールドを演算する必要がないからその分クエリのパフォーマンスは高くなるという手筈。さて、もう少し具体的に。
 [社員名] (String)/ [入社日] (Date)/ [入社年度] (Integer)を持つテーブルがあって、[入社年度] についてどうするか。
集計フィールドを用いない場合、[入社年度] にまつわるクエリに関しては、
SELECT
    T_社員.ID,
    T_社員.社員名,
    T_社員.入社日,
    Year(DateSerial(Year([入社日]),Month([入社日])-3,1)) AS 入社年度
FROM T_社員;
という感じになって、都度の演算が必要なる。集計フィールドを使う場合は、すでに [入社年度] は演算済みだから参照クエリのパフォーマンスが低下がない。
 集計フィールドにはインデックスを設定することができないから、さらなるパフォーマンスが必要ならば、以前からある方法や データマクロ で [入社年度] の値を演算して設定すればよい。
 また、テーブルに埋め込まれたロジックなので、Access 必須ということではない。ACE14.0 がインストールされた環境であればよいことは確認した。だから。PowerShell とかから accdb を操作しても集計フィールドは動作をしている。

0 件のコメント: