[Sitecore][SPE] SPE 使って、素早くアイテムを削除

検証環境は次の通りです。

  • Sitecore Experience Platform 9.0 rev. 180604 (9.0 Update-2)
  • Sitecore PowerShell Extensions 5.0

概要:

ローカルの環境にて開発中、時にはデバッグでコードをステップしてい行くことがよくあります。

ただ、もし、コンテンツにあまりにもたくさんのアイテムがある場合はこの作業が時間がかかります。

特に製品のカタログのような、万以上のアイテムがある場合は、たくさんのアイテムをSPEを使って

いかに早く削除するメモ書きです。

よく使われているのは下記の三つです。

1.SQLデーターベースクエリ

http://sitecoreexperiences.blogspot.com/2017/11/deleting-sitecore-items-in-sql-proceed.html

これは同僚の先輩が書いたクエリです。直接データーベースにてアイテムを削除するので早いです。これは私はプロダクションの環境にて使用することを極めて勧めません。ローカルの環境でディバグの際に便利です。基本的にデータベース内のアイテムデータを直接操作することはお勧めできません。これは走る前にバックアップを取りましょう。また完了後、リンクデータベースの再構築をしましょう。

2.アドメインツールのデーターベースブラウザー

http://sc902.local/sitecore/admin/dbbrowser.aspx

2019-08-08_Thursday_00

これは、コンテントエディタトラベルと早です。ただ、同じく直接データーベースにてアイテムを削除するので使用する際に要注意です。同じく、走る前にバックアップを取りましょう。また完了後、リンクデータベースの再構築をしましょう。

3.SPE

SPEにてアイテムを削除を簡単にできます。使用するコードによって速度も多少違ってきます。

2019-08-23_Friday_1

テストで2000のサブアイテムを削除します。91秒かかります。

2019-08-23_Friday_11

 コード:

2019-08-23_Friday_2

テストで2000のサブアイテムを削除します。オプションのPermanentlyを使って、80秒です。

2019-08-23_Friday_22

 コード:

2019-08-23_Friday_3

テストで2000のサブアイテムを削除します。

Sitecore.Data.BulkUpdateContext ブロックを使って、速度が56秒です。

2019-08-23_Friday_33

 コード:

 Sitecore.Data.BulkUpdateContext は大量なデータを扱う場合に使用されています。

これを使用することで、それぞれのアイテムのCRUDにて、インデックスまたイベントの発生を止めることで速度を上げます。

2019-08-23_17-06-13
自分でインデックスまたイベントの発生を止めるには: