美文网首页
SQL初认识——8:索引

SQL初认识——8:索引

作者: 软件测试学习笔记 | 来源:发表于2019-08-22 18:59 被阅读0次

1:

索引

在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引。

索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录,这样就大大加快了查询速度。

例如,对于students表:

id class_id name gender score

1 1 小明 M 90

2 1 小红 F 95

3 1 小军 M 88

如果要经常根据score列进行查询,就可以对score列创建索引:

ALTER TABLE students

ADD INDEX idx_score (score);

使用ADD INDEX idx_score (score)就创建了一个名称为idx_score,使用列score的索引。索引名称是任意的,索引如果有多列,可以在括号里依次写上,例如:

ALTER TABLE students

ADD INDEX idx_name_score (name, score);

索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。反过来,如果记录的列存在大量相同的值,例如gender列,大约一半的记录值是M,另一半是F,因此,对该列创建索引就没有意义。

可以对一张表创建多个索引。索引的优点是提高了查询效率,缺点是在插入、更新和删除记录时,需要同时修改索引,因此,索引越多,插入、更新和删除记录的速度就越慢。

对于主键,关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。

2:

唯一索引

在设计关系数据表的时候,看上去唯一的列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键。

但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。这个时候,就可以给该列添加一个唯一索引。例如,我们假设students表的name不能重复:

ALTER TABLE students

ADD UNIQUE INDEX uni_name (name);

通过UNIQUE关键字我们就添加了一个唯一索引。

也可以只对某一列添加一个唯一约束而不创建唯一索引:

ALTER TABLE students

ADD CONSTRAINT uni_name UNIQUE (name);

这种情况下,name列没有索引,但仍然具有唯一性保证。

无论是否创建索引,对于用户和应用程序来说,使用关系数据库不会有任何区别。这里的意思是说,当我们在数据库中查询时,如果有相应的索引可用,数据库系统就会自动使用索引来提高查询效率,如果没有索引,查询也能正常执行,只是速度会变慢。因此,索引可以在使用数据库的过程中逐步优化。

3:

小结

通过对数据库表创建索引,可以提高查询速度。

通过创建唯一索引,可以保证某一列的值具有唯一性。

数据库索引对于用户和应用程序来说都是透明的。

相关文章

  • SQL初认识——8:索引

    1: 索引 在关系数据库中,如果有上万甚至上亿条记录,在查找记录的时候,想要获得非常快的速度,就需要使用索引。 索...

  • SQL Server数据库高级进阶之索引优化实战演练

    一、SQL Server索引优化本质 二、SQL Server索引存储机制 三、SQL Server索引类型分类 ...

  • SQL初认识——4:安装SQL

    1: 安装MySQL 要在Windows或Mac上安装MySQL,首先从MySQL官方网站下载最新的MySQL C...

  • SQL初认识——1:什么是SQL

    1什么是SQL? 简单地说,SQL就是访问和处理关系数据库的计算机标准语言。也就是说,无论用什么编程语言...

  • SQL初认识——3:SQL的历史

    1: AQL的历史 MySQL是目前应用最广泛的开源关系数据库。MySQL最早是由瑞典的MySQL AB公司开发,...

  • MySQL正确使用索引

    需要解决的问题 知道sql为什么会走索引? 为什么有些sql不走索引? sql会走那些索引,为什么会这么走? In...

  • SQL初认识——6:主键

    主键 在关系数据库中,一张表中的每一行数据被称为一条记录。一条记录就是由多个字段组成的。例如,students表的...

  • SQL初认识——12:排序

    排序 我们使用SELECT查询时,细心的读者可能注意到,查询结果集通常是按照id排序的,也就是根据主键排序。这也是...

  • SQL语句的优化

    sql语句的优化:多使用共享语句 尽量使你的sql语句能够使用索引。怎样使sql语句能够使用到索引呢:当sql语句...

  • 索引设计指南

    Sql Server索引设计指南——脑图链接 参考资料:SQL Server 索引设计指南Clustered an...

网友评论

      本文标题:SQL初认识——8:索引

      本文链接:https://www.haomeiwen.com/subject/yyuosctx.html