• Mysql学习笔记三:索引


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

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

    例如,对于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);
    

    索引如果有多列,可以在括号里依次写上,例如:

    ALTER TABLE students
    ADD INDEX idx_name_score (name, score);
    

    索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。

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

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

    唯一索引

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

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

    ALTER TABLE students
    ADD UNIQUE INDEX uni_name (name);
    

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

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

    ALTER TABLE students
    ADD CONSTRAINT uni_name UNIQUE (name);
    
  • 相关阅读:
    软件测试方法
    激情是人生中最可宝贵的
    比较有意思的一篇文章
    基于LNMP的Zabbbix之Zabbix Agent源码详细安装,但不给图
    Mysql导入zabbix的sql语句时报错:ERROR 1045 (28000)
    502 Bad Gateway(Nginx) 查看nginx日志有如下内容
    jcaptcha进阶
    MFC 程序的运行流程
    Selenium API 介绍
    java.util.ComparableTimSort中的sort()方法简单分析
  • 原文地址:https://www.cnblogs.com/yczha/p/13160182.html
Copyright © 2020-2023  润新知