单列索引、多列索引及如何选择合适的索引列顺序

1、单列索引
最常见的索引类型涉及单个列,在数据结构中存储该列的值的副本,允许快速查找具有相应列值的行。 B树数据结构允许索引在WHERE子句中快速查找特定值,一组值或一系列值,对应于运算符如=,>,≤,BETWEEN,IN等。

mysql> create table people(
    -> last_name varchar(50) not null,
    -> first_name varchar(50) not null,
    -> sex enum('m','f') not null,
    -> key last_name(last_name)			//单列索引
    -> )engine=innodb;
Query OK, 0 rows affected (0.07 sec)			
	
mysql> select * from people;
+-----------+------------+-----+
| last_name | first_name | sex |
+-----------+------------+-----+
| Akroyd    | Christian  | f   |
| Akroyd    | Lumi       | m   |
| Barrymore | Debbie     | m   |
| Barrymore | Kirsten    | m   |
| Cathy     | Kim        | m   |
+-----------+------------+-----+
5 rows in set (0.00 sec)

mysql> explain select * from people where last_name > 'Barrymore';		//使用了索引进行查找
+----+-------------+--------+------------+-------+---------------+-----------+---------+------+------+----------+-----------------------+
| id | select_type | table  | partitions | type  | possible_keys | key       | key_len | ref  | rows | filtered | Extra                 |

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库原理第三章:关系数据库标准语言SQL 数据库系统概论chp3-2全文共66页,当前为第1页。 问题 1. 模式的作用是什么?它和用户有什么关联? 2. SQL Server2008在删除模式时的默认级联选项是什么? 3.在创建数据表时添加约束有几种方法? 数据库系统概论chp3-2全文共66页,当前为第2页。 3.3.3 索引的建立与删除 在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。而采用索引来加快数据处理速度通常是最普遍采用的优化方法。 数据库中的索引与书籍中的目录类似。 在一本书中,利用索引可以快速查找所需信息,无须阅读整本书。书中的目录是一个词语表,其中注明了包含各个词的页码。 数据库中的索引是,其中注明了表中包含各个值的行所一个表中所包含的值的表在的存储位置。 数据库系统概论chp3-2全文共66页,当前为第3页。 SQL Server中数据的访问方法: 表扫描法:当访问未建索引的表内数据时,从表的起始处逐行查找,直到符合查询条件为止。 使用索引:当使用索引访问建有索引的表内数据时,系统会通过遍历索引树结构来查找行的存储位置,效率非常高。 数据库系统概论chp3-2全文共66页,当前为第4页。 索引的作用 通过创建唯一索引,可以增强数据记录的唯一性。 可以大大加快数据检索速度。 可以加速表与表之间的连接,这一点在实现数据的参照完整性方面有特别的意义。 可以显著减少查询中分组和排序的时间。 使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。 数据库系统概论chp3-2全文共66页,当前为第5页。 关系数据库管理系统中常见索引顺序文件上的索引 B+树索引(hash)索引 位图索引 特点: B+树索引具有动态平衡的优点 HASH索引具有查找速度快的特点 数据库系统概论chp3-2全文共66页,当前为第6页。 索 引 谁可以建立索引 数据库管理员 或 表的属主(即建立表的人) 谁维护索引 关系数据库管理系统自动完成 使用索引 关系数据库管理系统自动选择合适索引作为存取路径,用户不必也不能显式地选择索引 数据库系统概论chp3-2全文共66页,当前为第7页。 索引的分类 如果以存储结构来区分,则有"聚集索引"(Clustered Index,也称聚类索引、簇集索引)和"非聚集索引"(Nonclustered Index,也称非聚类索引、非簇集索引)的区别; 如果以数据的唯一性来区别,则有"唯一索引"(Unique Index)和"非唯一索引"(Nonunique Index)的不同; 若以键的个数来区分,则有"单列索引"与"多列索引"的分别。 数据库系统概论chp3-2全文共66页,当前为第8页。 1.聚集索引聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序索引顺序一致。当以某字段作为关键字建立聚集索引时,表中数据以该字段作为排序根据。因此,一个表只能建立一个聚集索引,但该索引可以包含多个(组合索引) 数据库系统概论chp3-2全文共66页,当前为第9页。 2.非聚集索引非聚集索引完全独立于数据行的结构。数据存储在一个地方,索引存储在另一个地方。非聚集索引中的数据排顺序并不是表格中数据的排顺序。 SQL Server默认情况下建立的索引是非聚集索引。一个表可以拥有多个非聚集索引,每个非聚集索引提供访问数据的不同排序顺序。 数据库系统概论chp3-2全文共66页,当前为第10页。 3.唯一索引唯一索引是指索引值必须是唯一的。聚集索引和非聚集索引均可用于强制表内的唯一性,方法是在现有表上创建索引时指定UNIQUE关键字。确保表内唯一性的另一种方法是使用UNIQUE约束。 数据库系统概论chp3-2全文共66页,当前为第11页。 创建索引的方法 1.系统自动创建索引系统在创建表中的其他对象时可以附带地创建新索引。通常情况下,在创建UNIQUE约束或PRIMARY KEY约束时,SQL Server会自动为这些约束创建聚集索引。 2.用户创建索引除了系统自动生成的索引外,也可以根据实际需要,使用对象资源管理器或利用SQL语句中的CREATE INDEX命令直接创建索引。 数据库系统概论chp3-2全文共66页,当前为第12页。 1. 建立索引 语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<名>[<次序>][,<名>[<次序>] ]…); <表名>:要建索引的基本表的名字 索引:可以建立在该表的一多列上,各名之间用逗号分隔 <次序>:指定索引值的排次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE:此索引的每一个索引值只对应唯一的数据记录 CL

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值