• SQL中的索引


    引言

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

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

    索引

    1. 使用SQL来创建索引

    ALTER TABLE students
    ADD INDEX idx_score (score);
    
    • 1
    • 2

    可以同时创建多个索引

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

    2. 索引的效率

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

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

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

    3. 创建索引的注意事项

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

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

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

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

    ALTER TABLE students
    ADD CONSTRAINT uni_name UNIQUE (name);
    
    • 1
    • 2

    索引的小结

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

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

  • 相关阅读:
    PX4开源软件框架简明简介
    20.3 OpenSSL 对称AES加解密算法
    浅谈BIM在消防安全管理方面的优势
    pip某些包发生SSL错误
    unity urp 实现遮挡显示角色轮廓
    Clickhouse与Doris的区别
    Spring Cloud Stream详解
    79-基于STM32单片机的条形码扫描识别系统(实物图+源码+原理图+PCB+论文)
    python运算符重载之构造函数和迭代器
    手写一个PrattParser基本运算解析器3: 基于Swift的PrattParser的项目概述
  • 原文地址:https://blog.csdn.net/weixin_44943389/article/details/127414199