var recordsStates = from s in db.Record
join ss in db.Record_State
on s.Id equals ss.RecordId
join apct in db.RecordTypesContentMapping
on new { t1 = ss.RecordId } equals new { t1 = apct.ContentId } into ss_apct
from apct in ss_apct.DefaultIfEmpty()
where (apct.ContentSourceName == null || apct.ContentSourceName == nameof(Record))
&& ss.isCurrent && ss.StateId == (int)RecordStateType.Publish
&& !ss.isDeleated && !s.isDeleted
&& (searchRecords.CategoryIds.Count == 0 || searchRecords.CategoryIds.Contains((int)s.CategoryId))
&& (string.IsNullOrEmpty(searchRecords.RecordTitle) || (string.IsNullOrEmpty(s.RecordNameModified) ?
s.RecordName.Contains(searchRecords.RecordTitle) :
s.RecordNameModified.Contains(searchRecords.RecordTitle)))每张表格都有大约100万份记录。
如果我发送空的RecordTitle,大约需要7-8秒,如果不是空的,则需要4-5秒。
我试着将NC索引应用于主题标题和诸如此类。它是nvarchar(1000)型的。
每个表都是通过外键关联的。我现在不知道是什么让它变慢了。
发布于 2022-09-02 07:36:51
问题可能是笛卡尔爆炸
您可以改进linq到sql的查询性能(正如您应该做的那样),也可以使用拆分查询*。
https://stackoverflow.com/questions/73579092
复制相似问题