【发布时间】:2014-02-06 16:12:22
【问题描述】:
我正在使用 Entity Framework 6.0 在 C# 4.5 / SQL2012 中重新执行我的“票务应用程序”。之前的开发是匆忙进行的,没有任何额外的索引。该应用程序运行良好,但我希望 v2 成为“应有的样子”。在我走得更远之前,我需要“垫在肩膀上”和这些词--是的.. ur doin' a'right-- ☺
在其他应用程序中,我的主键始终是我的 ID (int) 列,它恰好是集群的,因为它似乎是 SQL 的默认值。之后我只是添加了一个非聚集列“当我喜欢它的时候”。
总之.. 带有 id、类型(事件或请求)、状态(打开、暂停、已解决、..)、主题等的表 ticket。 带有 id 和名称的表 assignee 带有ticketId 和assigneeId 的表junctionTicketAssignee
票和受让人的关系是多对多的。 大多数时候,我只会通过它的 ID 来获取一张票或受让人。 在工单概览中,默认情况下工单的状态为“打开”和“暂停”,按分配给当前受让人的日期 (desc) 排序。
因此我现在有以下索引:
in 'ticket'
PK_ticket = PRIMARY KEY NON-CLUSTERED (ticket.id ASC)
IX_ticket = UNIQUE CLUSTERED (ticket.id ASC, ticket.dateCreate DESC, status ASC, type ASC)
IX_type = NON-UNIQUE NON-CLUSTERED (ticket.type)
IX_status = NON-UNIQUE NON-CLUSTERED (ticket.status)
in 'assignee'
PK_assignee = PRIMARY KEY CLUSTERED (assignee.id ASC)
in 'junctionTicketAssignee'
PK_junctionTicketAssignee = PRIMARY KEY CLUSTERED (ticketId ASC, assigneeId ASC)
FK_Assignee = PRIMARY KEY assignee.id -> FOREIGN KEY junctionTicketAssignee.assigneeId
FK_Ticket = PRIMARY KEY ticket.id -> FOREIGN KEY junctionTicketAssignee.ticketId
我已将这些与我对索引的基本知识放在一起。我在正确的轨道上吗?
【问题讨论】:
-
您也可以查看
filtered index。除此之外,看起来你在正确的轨道上。
标签: c# sql .net sql-server sql-server-2012