5

What is the performance impact on using custommeta criteria on fields tagged with keywords instead of keyword criteria?

Note that there is a mix of custom and keyword metadata that I need to filter on.

The reason why it is now all custom meta is that I need to construct a lot of generic queries dynamically and during construction there isn't enough information if query needs to be done on keyword or on custom meta. If there is a noticeable performance impact, I am thinking about keeping a separate list/map of all keywords that could be used as part of queries.

2 Answers 2

5

In terms of gauging performance, I can't give you a direct answer but I can point you in the right direction of sorting this out. In order to gauge the performance, we want to break down the query into the raw SQL and then run a few CD queries to investigate.

You can read more about enabling hibernate logging here. I would enable the logging, and run a couple of queries using the CustomMeta criteria and then the Keyword criteria and compare the raw SQL to see the root differences.

Performance aside, I typically use the CustomMeta criteria(s) as to leave the code flexible (whenever possible). Recently, I stepped into an implementation where we were tagging content with keywords & then fetched these components through a CustomMeta criteria CD query. Over time, the list of keywords had grown into the tens of thousands and was affecting performance - and due to the keywords being generated and the components tagged automatically, they provided no benefit (they were tagging products with codes). We changed the metadata field to be a (multi-valued) text-field, and because we had use the custom meta criteria - no code change was necessary on the delivery side since we kept the same field name; which would have not been true had the original implementation used the Keyword criteria(s).

2

I believe that triggering performance impact is purely depends on your framework, how you build.

By default, Tridion comes with Object Caching.

Learn more about Caching (Tridion Object Cache)

there is a mix of custom and keyword metadata that I need to filter on

Technically, you can retrieve results based on custom metadata and keyword metadata.

You framework should allow developers to retrieve the results as per requirements that is either by keyword or custom or both.

For Custom metadata, we have below criteria

  • CustomMetaKeyCriteria
  • CustomMetaValueCriteria
  • CustomMetaDateRangeCriteria and soon

For Keyword metadata, we have below criteria

  • KeywordCriteria
  • TaxonomyCriteria
  • TaxonomyKeywordCriteria
  • TaxonomyKeywordKeyCriteria and soon

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.