Ruu*_*ubW 2 sql-server-2008 sql-server
最近,我一直在重构我为雇主开发的产品的 SQL Server 索引。这些产品之一是包含多个用户级别的在线仪表板。
每个用户(管理员级别)都可以创建项目,然后他们可以将这些项目链接到以下用户级别的用户。每个项目都有自己的Name字段以及AdministratorUserId跟踪项目管理员的字段。我在这两个字段上创建了一个组合的非聚集唯一索引,这意味着每个管理员的项目名称必须是唯一的。
现在,这里的渔获:我注意到,我经常做一个选择的AdministratorUserId 唯一,而不是Name。根据索引指南,如果我错了,请纠正我,我将在该字段上创建一个非聚集索引以优化我的查询。
我的问题是 - 我现有的Name+索引是否AdministratorUserId已经改进了我的查询,还是建议除此之外创建一个单独的索引?AdministratorUserId存在于两个单独的索引中会不会有任何不利之处?
小智 6
索引中列的顺序很关键。
如果您AdministratorUserId是索引的第一列,那么分离索引不会有任何改善。
索引的工作方式类似于order by子句,这意味着它按第一列排序,然后是第二列,然后是第三列,依此类推。因此,索引 onAdministratorUserId在功能上等同于AdministratorUserId和上的索引Name。请注意,在 sql server 中可以将列包含到非聚集索引中,这些列是非键列。这将增加索引的存储大小,但可能会提高查询的性能,因为它将节省对包含在索引中的列的查找操作。
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |