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

mysql学习之旅08-索引

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

作用:

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

分类:

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

使用:

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

准则:

  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. 查询尽量避免使用*,写出需要查询的字段
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JeffHan^_^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值