SQL点点滴滴_唯一索引设计指南-转载
唯一索引能够保证索引键中不包含重复的值, 从而使表中的每一行从某种方式上具有唯一性, 只有当唯一性是数据本身的特征时, 指定唯一索引才有意义. 例如, 如果您希望确保 HumanResources.Employee 表的 NationalIDNumber 列中的值唯一, 当主键为 EmployeeID 时, 可以为 NationalIDNumber 列创建一个 UNIQUE 约束. 如果用户尝试在该列中为多个雇员输入相同的值, 将显示错误消息并且不能输入重复的值.
使用多列唯一索引, 索引能够保证索引键中值的每个组合都是唯一的. 例如, 如果为 LastName、FirstName 和 MiddleName 列的组合创建了唯一索引, 则表中的任意两行都不会有这些列值的相同组合.
聚集索引和非聚集索引都可以是唯一的, 只要列中的数据是唯一的, 就可以为同一个表创建一个唯一聚集索引和多个唯一非聚集索引.
唯一索引的优点包括下列几点:
能够确保定义的列的数据完整性.
提供了对查询优化器有用的附加信息.
创建 PRIMARY KEY 或 UNIQUE 约束会自动为指定的列创建唯一索引. 创建 UNIQUE 约束和创建独立于约束的唯一索引没有明显的区别, 数据验证的方式是相同的, 而且查询优化器不会区分唯一索引是由约束创建的还是手动创建的. 但是, 如果您的目的是要实现数据完整性, 则应为列创建 UNIQUE 或 PRIMARY KEY 约束, 这样做才能使索引的目标明确.
注意事项
如果数据中存在重复的键值, 则不能创建唯一索引, UNIQUE 约束或 PRIMARY KEY 约束.
如果数据是唯一的并且您希望强制实现唯一性, 则为相同的列组合创建唯一索引而不是非唯一索引可以为查询优化器提供附加信息, 从而生成更有效的执行计划. 在这种情况下, 建议创建唯一索引(最好通过创建 UNIQUE 约束来创建).
唯一非聚集索引可以包括包含性非键列, 有关详细信息,请参阅 具有包含列的索引 .
索引选项
创建唯一索引时, 可以指定若干索引选项, 特别要注意下列选项:
IGNORE_DUP_KEY
ONLINE
有关详细信息, 请参阅 设置索引选项
SQL点点滴滴_唯一索引设计指南-转载的更多相关文章
- SQL点点滴滴_聚集索引设计指南-转载
聚集索引基于数据行的键值在表内排序和存储这些数据行, 每个表只能有一个聚集索引, 因为数据行本身只能按一个顺序存储. 有关聚集索引体系结构的详细信息, 请参阅 聚集索引结构. 每个表几乎都对列定义聚集 ...
- SQL点点滴滴_非聚集索引设计指南-转载
非聚集索引包含索引键值和指向表数据存储位置的行定位器. 有关非聚集索引体系结构的详细信息, 请参阅 非聚集索引结构. 可以对表或索引视图创建多个非聚集索引. 通常, 设计非聚集索引是为改善经常使用的没 ...
- Sql Server系列:索引设计原则及优化
1. 索引设计原则 索引设计不合理或缺少索引都会对数据库的性能造成障碍,高效的索引对于获得良好的性能非常重要. 设计索引时的一些原则: ◊ 索引并不是越多越好,一个表中如果有大量的索引,不仅占用大量的 ...
- SQL点点滴滴_查询类型和索引-转载
当您考虑是否要对列创建索引时, 请估计在查询中使用列的方式, 下表介绍了索引对其有用的查询类型. 表中的示例基于 AdventureWorks2008R2 示例数据库, 在 SQL Server Ma ...
- SQL Server 索引设计指南
https://msdn.microsoft.com/zh-cn/library/jj835095(v=sql.120).aspx#Nonclustered
- SQL点点滴滴_查看所有存储过程或视图的位置及内容
代码:select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules b where a.is_ms_ship ...
- SQL点点滴滴_特殊用法笔记
声明: 本文为转载,感谢原作者的辛勤付出. 原博客地址为:http://www.cnblogs.com/icyJ/p/SQL_Statement.html 1.MERGE用法:关联两表,有则改,无则加 ...
- SQL点点滴滴_常用函数
该文章转载自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html 别人的总结,很详细. 以下所有例子均Studnet表为例 ...
- SQL Server的复合索引学习【转载】
概要什么是单一索引,什么又是复合索引呢? 何时新建复合索引,复合索引又需要注意些什么呢?本篇文章主要是对网上一些讨论的总结. 一.概念 单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列 ...
随机推荐
- Windows与linux添加用户命令
Windows 查看当前存在用户: net user 查看当前用户组: net localgroup 添加用户(以添加用户test密码test1234为例): net user test test12 ...
- C# winform窗体传值 利用委托 子窗体传值给父窗体
首先在Form2中定义委托和事件: //声明委托 和 事件 public delegate void TransfDelegate(String value); public partial clas ...
- python3 zip压缩
参考: https://docs.python.org/3/library/zipfile.html https://zhidao.baidu.com/question/149840976436638 ...
- sizeof(数组名) 与 数组长度
int a[] = {1, 2, 3, 4}; cout << sizeof(a); //16 char b[] = "abc"; cout << size ...
- Rabbitmq的五种模式和案例
消息生产者p将消息放入队列 消费者监听队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列删除 (缺点:消息可能没有被消费者正确处理,已经消失了,无法恢复) 应用场景:聊天室 1.引入依赖 &l ...
- JDBC(3)-使用PreparedStatement接口实现增、删、改操作
1.PreparedStatement接口引入 PreparedStatement是Statement的子接口,属于预处理操作,与直接使用Statement不同的是,PreparedStatement ...
- 【ExtJS】 布局Layout
布局用于定义容器如何组织内部子元素和控制子元素的大小. ExtJS中有两种类型的布局:Container容器类布局与Component组件类布局. Containter容器类布局:负责容器内容Extj ...
- 1.6 js基础
必会示例: i的问题 qq头像完整版 this的错误用法 按住鼠标连续加减 封闭空间 甲乙的问题 京东轮播图 苏宁延迟选项卡 无限下拉菜单 淘宝短发送倒计时 1.必须会的 选项卡.按钮 ...
- idea tomcat添加
https://blog.csdn.net/fanhenghui/article/details/69258499
- HDU 5691 ——Sitting in Line——————【状压动规】
Sitting in Line Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Other ...