索引 设计准则

简介:

1. 一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为数据库有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。

2. 组合索引:组合索引即多列索引,指一个索引含有多个列。一个组合索引相当于多个单列索引,如索引(ColA, ColB, ColC)至少相当于(ColA)、(ColA, ColB)、(ColA, ColB, ColC)三个索引。

2. 覆盖的查询可以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引(组合索引)中。例如,如果在一个表的 a、b 和 c 列上创建了组合索引,则从该表中检索 a 和 b 列的查询被视为覆盖的查询。创建覆盖一个查询的索引可以提高性能,因为该查询的所有数据都包含在索引自身当中;检索数据时只需引用表的索引页,不必引用数据页,因而减少了 I/O 总量。尽管给索引添加列以覆盖查询可以提高性能,但在索引中额外维护更多的列会产生更新和存储成本。

3. 对小型表进行索引可能不会产生优化效果,因为数据库在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。

4. 应使用 SQL 事件探查器和索引优化向导帮助分析查询,确定要创建的索引。为数据库及其工作负荷选择正确的索引是非常复杂的,需要在查询速度和更新成本之间取得平衡。窄索引(搜索关键字中只有很少的列的索引)需要的磁盘空间和维护开销都更少。而另一方面,宽索引可以覆盖更多的查询。确定正确的索引集没有简便的规则。经验丰富的数据库管理员常常能够设计出很好的索引集,但是,即使对于不特别复杂的数据库和工作负荷来说,这项任务也十分复杂、费时和易于出错。可以使用索引优化向导使这项任务自动化。有关更多信息,请参见索引优化向导。

5. 可以在视图上指定索引。

6. 可以在计算列上指定索引。

7. 避免在索引列上使用IS NULL和IS NOT NULL。避免在索引中使用任何可以为空的列,数据库将无法使用该索引。对于单列索引,如果列包含空值,索引中将不存在此记录;对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中。

8. 如果经常检索包含大量数据的表中的少于15%的行则需要创建索引。

9. 衡量索引效率的 95/5 规则:如果查询的结果返回的行数少于表中所有行的5%,则索引是检索数据的最快方法,如果查询的结果超过5%,那么通常使用索引就不是最快的方式。

10.主关键字和唯一关键字所在的列自动具有索引,但外部关键字没有自动索引。

二、索引的特征 在确定某一索引适合某一查询之后,可以自定义最适合具体情况的索引类型。索引特征包括:

●聚集还是非聚集 ●唯一还是不唯一 ●单列还是多列 ●索引中的列顺序为升序还是降序(索引缺省为升序,但目前多数大型数据库已经能够支持反向索引) ●覆盖还是非覆盖 ●还可以自定义索引的初始存储特征,通过设置填充因子优化其维护,并使用文件和文件组自定义其位置以优化性能。 ●位映射索引(bitmap)




本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081566

相关文章
|
12月前
|
存储 C语言 Python
求1+2!+3!+…+20!的和
求1+2!+3!+…+20!的和
219 3
|
网络协议 数据安全/隐私保护 网络架构
如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面
如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面
|
存储 安全 算法
网络安全与信息安全:漏洞探索与安全意识加固
在当今数字化时代,网络安全和信息安全成为关乎个人、组织 ja和国家安全的核心议题。本文深入探讨了网络安全漏洞的概念与分类、加密技术的发展及应用、以及如何提升公众和企业的安全意识。通过对漏洞修复、加密算法与安全教育的详细分析,帮助读者全面理解和应对当今复杂的网络安全挑战。
|
存储 自然语言处理 关系型数据库
第八章,索引的创建与设计原则(1)
第八章,索引的创建与设计原则
115 0
|
云安全 监控 安全
云端防御战线:云计算环境下的网络安全策略
【5月更文挑战第23天】 在数字化浪潮不断推进的当代,云计算已成为企业IT架构的核心。然而,随之而来的是日益严峻的网络安全挑战。本文将深入探讨云计算环境中面临的安全威胁,并提出一系列针对性的安全策略和最佳实践。从数据加密到身份验证,从访问控制到入侵检测,文章将详细解析如何构建一个既灵活又坚固的云安全防护体系,以保护企业在云端的资产和服务不受网络攻击的侵害。
|
存储 编解码 数据挖掘
VOD(Video on Demand)
VOD(Video on Demand)是指视频点播,是一种通过互联网或其他数字传输网络,在用户需求下,按照用户选择的节目或者内容,随时、任意、快速地进行点播的服务。通俗地说,就是用户可以随时随地通过网络观看自己选择的视频内容,而不需要等待节目的播出时间。
1066 1
|
调度 决策智能
【免费】基于数据驱动的模型预测控制电力系统机组组合优化
【免费】基于数据驱动的模型预测控制电力系统机组组合优化
|
安全 网络安全 开发工具
Git 之 git clone 使用 https 和 ssh 的区别
Git 之 git clone 使用 https 和 ssh 的区别
1670 0
|
边缘计算 BI Go
Go --- 操作Excel文档
Go --- 操作Excel文档
Go --- 操作Excel文档
|
缓存 监控 前端开发
全链路压测第一次实践
电商业务本身比较复杂,且当前阶段我们微服务架构下,各个服务间依赖高,调用关系复杂,且没有较为清晰的链路梳理,理论上来说,只有一部分系统才是核心链路。所以,面临的第一个挑战,就是从错综复杂的系统中梳理出核心业务链路。
全链路压测第一次实践