我正在开发一个使用历史CRUD方法在SQL Server数据库中写入的EF6代码第一个项目。
因此,我的表格共有以下几列:
StartDate
和EndDate
:这是记录的有效范围GroupId
:是一个包含在任何查询中使用的int的列,因为已创建数据库以包含多公司数据此外,该列具有一个Guid的逻辑ID,表示识别实体及其所有历史记录的单一方式。
该列还包含作为主键的标识,但未在业务逻辑中使用。
基本上我有两种疑问:
第一种类型用于提取实体列表,因此它类似于:
SELECT *
FROM CLASS
WHERE date BETWEEN StartDate AND EndDate
AND GroupId = N
第二种类型,用于提取单个实体的活动记录:
SELECT *
FROM CLASS
WHERE GUID = 'myGuid'
AND date BETWEEN StartDate AND EndDate
AND GroupId = N
我应该创建哪种索引?是否应该更好地创建许多单列索引或两个多列索引(一个具有日期和GroupId
,另一个具有日期GroupId
和Guid)?
此外,我是否应该特别注意编写LINQ查询,尤其是查询中的条件顺序(以确保正确使用索引)?