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 文字のフィールドを追加すると全てのインデックス
が削除されてしまうことを確認します。

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

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

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

まとめ

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

– 中村 憲一郎

Comments (3)

  1. Taichi Sato より:

    例えば、カスタムのキー値フィールド(例えば証券番号など)を作っていて、ユーザーがその値で検索することはないので簡易検索としては必要ないけれど、プラグインなどから検索する必要がある場合、インデックスが欲しいので、そのフィールドを簡易検索列に追加するという設計は間違っていないでしょうか?

  2. kenakamu より:

    コメントありがとうございます。

    設置型の場合には簡易検索に追加せずカスタムインデックスを追加することを推奨します。簡易検索に入れた場合には検索対象が増えるため、簡易検索自体のパフォーマンスに影響が出る可能性がございます。

    オンライン版の場合は、現状カスタムインデックスを作成できないため回避策としては考えられますが、簡易検索とプラグインのパフォーマンス比較を行いご検討ください。

    – 中村 憲一郎

  3. Taichi Sato より:

    早速のご回答ありがとうございます。

    最近は主にオンライン版ですので、パフォーマンスが落ちてきたときなどに、回避策として、簡易検索フィールドに追加することを検討しようと思います。

    設置型は確実にカスタムインデックスを追加したほうが良いということも、理解いたしました。