SharePoint Online へは、いつからかリストの詳細設定に「インデックスの自動管理」という設定項目が追加されていました。(既定で有効)説明には「インデックスの自動管理を使うと SharePoint でこのリストの列インデックスが保持され、ビュー内で最適なクエリのパフォーマンスを提供できます。」と記載されており、良いこと尽くめなのですが、その動作の詳細については不明のままでした。
先日、SharePoint Server 2016 IT Preview がリリースされ、こちらにもインデックスの自動管理機能が実装されていたことから、動作について色々と見えてきたので検証を行ってみました。※検証は SharePoint Server 2016 IT Preview を用いて行っています。製品版で同様に動作するかはわかりません。
対象は 2,500 アイテム以上のリスト
この機能の動作について解説されているのは、こちらの記事です。
Navigating List View Thresholds in SharePoint Server 2016 IT Preview
http://blogs.technet.com/b/wbaer/archive/2015/08/27/navigating-list-view-thresholds-in-sharepoint-server-2016-it-preview.aspx
英語だったので、うーんと唸りながら読み進めたのですが、どうやら「2,500 アイテム」と「フィルターを利用したビュー」がキーワードのようです。さっそく試してみましょう。
動作を確認してみた
動作を確認するために、まずはリストの中に 2,500 アイテム以上を登録します。
そしてサーバーの全体管理から「Large list automatic column index management job」というタイマー ジョブを探して実行してみます。こちらのジョブは、既定では日次で動くようです。(ということは、SharePoint Online でも日次?未確認です。)
タイマー ジョブの実行完了を確認した後、リストの設定にある「インデックス付きの列」を確認してみると、なるほどインデックスは作成されていません。
そこで、フィルターを利用したビューを新規に作成したのち、再度タイマー ジョブを実行してみます。
すると、今度はちゃんとインデックス付きの列が作成されていました。自動作成されたものには「(自動作成されたインデックス)」と表記されており、手動で作成したものと区別されています。
さいごに
ビューのパフォーマンスや、特に多くのアイテムが登録されているリストのパフォーマンスに影響する列インデックスですが、その設定はなかなか一般のユーザーには面倒なものでした。この「インデックスの自動管理」によって、誰でも意識することなく列インデックスの恩恵を受けることができますね。
何度か試してみたところ、ビューの「フィルター」で有効であり「並び替え」ではインデックスは自動作成されませんでした。どういった条件で作成されるのかは、もうすこし検証が必要ですね。
このほかにも、SharePoint Server 2016 では、「5,000 件問題」に対応すべく色々な改善が行われているようです。コツコツと検証していきたいですね。