SQL中的索引

引言

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

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

索引

1. 使用SQL来创建索引

ALTER TABLE students
ADD INDEX idx_score (score);

可以同时创建多个索引

注意:虽然在SQL中不区分大小写,在这里为了一眼看出来,SQL中的关键字使用大写,索引也是有索引名的,就叫做idx_score,后面括号中的东西才是真正的索引项。

2. 索引的效率

  • 关于索引的效率这完全取决于索引在分布的时候是不是散列的,在这里我们需要用到的东西是hash函数,将索引全部散列到真正的数据中,散列后的散列值越不相同,那么通过散列查找数据的效率就越高。

  • 我们完全可以根据需要在一张表中创建多个索引,毫无疑问这样提高了索引的查询效率,但是在插入删除更新节点的时候也同时要修改索引。所以也不见得索引越多就是一件好事。

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

3. 创建索引的注意事项

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

看似唯一的东西,因为业务逻辑的关系,并不适合作为主键。

  • 创建唯一索引 index [index_name]
ALTER TABLE students
ADD UNIQUE INDEX uni_name (name);

对某一列添加一个唯一约束而不创建唯一索引 约束 constraint [constraint_name]

ALTER TABLE students
ADD CONSTRAINT uni_name UNIQUE (name);

索引的小结

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值