【发布时间】:2017-09-18 02:45:41
【问题描述】:
假设我有下表:
表测试:
ID | Name | Ver | Col3| Col4 | ...
01 | ABC | 2 | xxx | yyy | ...
02 | DEF | 8 | xxx | yyy | ...
03 | DEF | 8 | xxx | yyy | ...
...
ID 列是主键、唯一键和聚集索引 Ver 列没什么特别的。
到目前为止,我通过以下方式进行了 SELECT 查询:
SELECT (NAME, Col1, Col2) WHERE ID = '01'
下一个版本将包含 SELECT 查询,方式如下:
SELECT (NAME, Col1, Col2) WHERE ID = '01' AND Ver = '8'
为什么?因为我打算在系统的UPDATE和DELETE查询中包含这个查询,这样可以确保不会有并发的编辑冲突,因为它只能更新其中ID 和Ver 匹配,如果实体在此期间发生更改,则 SELECT 部分将保护实体免于更新,因为它不会返回任何内容。 (无需更新或删除)
问题
此更改是否会影响我的数据库性能,或者它不会影响查询中的Ver 列,因为选择中的列之一是唯一主键 .
如果它会影响记录检索的性能,我应该将Ver 与ID 一起包含在聚集索引 中吗? Ver 应该是第二个索引吗?
欢迎提供事实和意见。
【问题讨论】:
标签: sql-server database database-performance