我有一个定义如下的类:
public class AlarmViolation
{
public string ObjectId { get; set; }
public int ChartType { get; set; }
public string AlarmInternalId { get; set; }
public short PositionInSequence { get; set; }
public short SequenceCount { get; set; }
public string TagValue { get; set; }
public DateTime PurgeDate { get; set; }
}
然后我创建一个此类的列表,如下所示:
List<AlarmViolation> alarmViolationList;
我目前执行如下 Linq 查询:
return alarmViolationList
.Where(row => row.ObjectId == objectId)
.Where(row => row.ChartType == this.ChartType)
.Where(row => row.AlarmInternalId == this.InternalId)
.Where(row => row.PositionInSequence == positionInSequence)
.Where(row => row.SequenceCount == sequenceCount)
.Any();
我目前的实现表现很差。该列表通常包含介于 150K 和 300K 之间的条目。此查询会定期执行数百次(大约每 3 分钟一次)。
如果我能以某种方式索引这个列表,或者如果这是一个数据库表,我会在 ObjectId + ChartType 上创建一个索引。
有人可以提出更有效的实施方案。如果您需要更多信息,我很乐意提供。