• 【Mysql】mysql学习之旅08-索引


    mysql学习之旅08-索引

    概念:索引相当于目录,在数据库中维护表数据的顺序。快速定位数据。一张表可以设置多个索引。但不代表越多越好,索引本身占用系统资源。频繁使用的列建议追加索引

    作用:

    1. 提高数据的查询速度,节省系统资源
    2. 确保数据的唯一性
    3. 可以加速表和表之间的连接,实现表与表之间的参照完整性
    4. 使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间

    分类:

    1. 普通索引:提高查询效率
    2. 唯一约束:为了避免列值重复,创建了唯一性约束,自动创建。
    3. 主键索引:表设置主键会自动生成,一张表只能有一个
    4. 复合索引:将多个列合并在一起建立索引(一般情况下,不推荐)
    5. 全文索引:只能用于MyISAM引擎,使用与大字段文本
    6. 空间索引:对空间数据类型的列,必须声明not null,只能用于MyISAM引擎

    使用:

    1. 创建索引
    create index 索引名 on 表名(字段名)
    
    • 1
    1. 修改索引:先删除再创建
    2. 删除索引
    drop index 索引名 on 表名
    
    • 1
    1. 查看索引
    show index(或keys) from 表名
    
    • 1

    准则:

    1. 索引不是越多越好
    2. 不要对经常变动的数据加索引
    3. 小数据量的表建议不要加索引
    4. 索引一般应加载查找条件的字段

    注意:

    1. 准确查询会使用索引
    2. 模糊查询,只有确定开头(‘xx%’)才使用索引
    数据库设计:

    E-R图

    1. 实体(Entity): 名词,矩形
    2. 属性(Attribute): 名词,椭圆
    3. 关系(Service): 动词,菱形

    三个范式:

    1. 第一范式:1NF 原子性

    表中的列具有原子性,不可分割,数据不能重复

    1. 第二范式:2NF 实体完整性

    表中需要设置主键,确保实体完整性,表中的非主键属性依赖于主键

    1. 第三范式:3NF 不能有传递依赖
      表中非主键列直接依赖主键,不能有传递依赖,如果有传递依赖,需要拆分表,设置主外键关系,确保引用完整性
    SQL优化:
    1. 索引优化
    2. 选择合适的列数据类型
    3. 尽可能使用NOT NULL
    4. 避免使用多表连接,join的字段需要加索引
    5. 尽量不要使用子查询
    6. 尽量再where子句中使用!=或<>操作符
    7. 慎用in 和not in
    8. 尽量使用数字类型的字段
    9. 查询尽量避免使用*,写出需要查询的字段
  • 相关阅读:
    Linux 之 Ubuntu 上 Vim 的安装、配置、常用命令的简单整理
    【OpenPLC】在linux板卡上添加CANOpen功能
    使用Linkerd实现流量管理:学习如何使用Linkerd的路由规则来实现流量的动态控制
    力扣 234. 回文链表
    微服务简单实现最终一致性
    U盘RAW格式怎么恢复 U盘RAW格式怎么改过来
    从原理到实战,详解XXE攻击
    SM4 研究与实现
    【Java】21天学习挑战赛
    「 每日一练,快乐水题 」1608. 特殊数组的特征值
  • 原文地址:https://blog.csdn.net/Jeffhan_java/article/details/126157920