クエリのアーキテクチャ
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreは、可能な限り最速のテクノロジーを使用してクエリを処理します。これは、データ プロバイダーが要求されたクエリをサポートしている場合はSQLデータベース、またはSitecoreデータ マネージャーのいずれかです。SQLデータベースは最高のパフォーマンスを提供しますが、残念ながらすべてのクエリをサポートしているわけではありません。
SQLデータベースは、パスで項目を解決する "/sitecore/content/home"や、一連の項目を名前で検索する "//home"などのクエリをサポートしています。たとえば、SQLデータベースを使用する大規模なサイトがあり、needleという名前のすべてのコンテンツ項目を検索しようとしている場合、次のAPIコードはこの結果セットを取得します。
SQL Serverデータ プロバイダはこの種のクエリをサポートしているため、データベースに多数のコンテンツ項目が含まれている場合でも、クエリはデータベースで直接解決され、かなり高速に実行されます。
ただし、検索条件を追加すると、Sitecoreの検索方法が変わる可能性があります。前の例で、アイテムにIsHiddenという名前のチェックボックスフィールドが含まれている場合、非表示になっていない針を見つけるには、次のコードを使用します。
SQL Serverデータ プロバイダは、述語 (角かっこで囲まれた検索文字列の部分 @IsHidden != '1') をサポートしていません。したがって、SitecoreはクエリAPIを使用してデータ マネージャーでこのクエリを解決します。これを行うには、クエリスコープ内のすべての項目 (この例では /sitecore/contentのすべての子孫) が読み込まれ、述語を各項目および一致する項目に対して評価できるようになります。残念ながら、これほど多くのアイテムをロードすることに伴うパフォーマンスの低下は、大規模なアイテムセットの場合、非常に劇的なものになる可能性があります。より最適なアプローチは、最初にneedleという名前のすべての項目を検索し、次にメモリ内の結果セットを検索して、非表示になっていない項目を見つけることです。