c# - Umbraco RelationService.GetByParentId(memberId) slow. Fires two queries per item -
i'm trying relation items 1 parent calling:
var items = applicationcontext.current.services.relationservice.getbyparentid(members.getcurrentmemberid()).toarray(); it works fine. except when @ miniprofiler, can see it's firing off 2 queries per item, causing major performance issues larger amounts of items. 
i looked @ umbracocms code , found piece of code:
protected override ienumerable<irelation> performgetbyquery(iquery<irelation> query) { var sqlclause = getbasequery(false); var translator = new sqltranslator<irelation>(sqlclause, query); var sql = translator.translate(); var dtos = database.fetch<relationdto>(sql); foreach (var dto in dtos) { yield return get(dto.id); } } the foreach on dtos sending query each movenext() umbracorelationtype table. get() method queries individual item umbracorelation table. think it's supposed utilize cache there, evidently it's not.
anyway. how improve performance here? can somehow content in single query without bypassing umbraco?
i'm using umbraco 7.2.6
i recommend getting parent node or id - , using
applicationcontext.services.relationservice.getbyid(parent.id)suffers less database queries.
Comments
Post a Comment