Dynamics CRM 2013/Fall '13 簡易検索のインデックスサポート

みなさん、こんにちは。

今回は Microsoft Dynamics CRM 2013 および、Microsoft Dynamics
CRM Online Fall '13 の新機能であり、簡易検索のインデックス作成
について紹介します。

概要

簡易検索ビュー定義の検索列に任意の列を追加することで、検索
対象とすることができますが、多くの場合それらの列には適切な
インデックスがないことから検索のパフォーマンスに大きな影響
が発生していました。

設置型の場合は直接データベースに対してカスタムインデックス
を作成することも可能ですが、オンライン環境の場合には対応が
行えませんでした。

Microsoft Dynamics CRM 2013 および、Microsoft Dynamics CRM
Online Fall '13 では、簡易検索ビュー検索列の情報から、自動で
インデックスを作る機能を提供します。

インデックス作成の動作

インデックスは以下の条件を満たしている場合に作成されます。

- 最大 20 列まで
- インデックス列の合計が 900 バイトまで
- 公開済のビュー定義を対象

インデックスはメンテナンス非同期サービス、OperationType 15
によって以下の形式で作成されます。

ndx_QF_<列名>

並べ替え列はインデックス作成対象にはなりません。

インデックス作成の確認

以下インデックス作成の確認は設置型のみで行えますが、同じ
動作はオンラインでも実施されます。

1. テストの為にカスタムエンティティを 1 つ作成します。名前を
以下のように設定しました。

image

2. 文字列型、長さ 100 文字のカスタムフィールドを 10 個作成
します。また長さ 450 文字と 451 文字のカスタムフィールドを
それぞれ 1 つずつ作成します。

3. 簡易検索ビューの検索列に 100 文字のカスタムフィールドを
全て追加して、カスタマイズを公開します。

4. 非同期サービスが実行されるのを待ちます。

5. 以下のようにインデックスが自動で作成されます。

image

6. 長さ 450 文字のフィールドを追加しても同様にインデックスが
追加されることを確認します。

7. 長さが 451 文字のフィールドを追加すると全てのインデックス
が削除されてしまうことを確認します。

簡易検索のベストプラクティス

簡易検索を利用する場合、以下の点に注意してください。

- 極力少ない検索列を設定する
- 並べ替えを極力減らす
- 前方一致のみ利用するようにする
- 関連エンティティのフィールドを最小限に留める
- サイズの大きい列は簡易検索に含めない

まとめ

今回の新機能により、簡易検索については適切なインデックスが
自動で作成されるため最適なパフォーマンスが期待できます。
設置型、オンラインいずれも恩恵を受けれる機能です。

- 中村 憲一郎