7、索引

本文详细介绍了数据库索引的作用、种类及其应用技巧,包括普通索引、主键索引、唯一索引、联合索引等,并提供了创建和删除索引的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作用:

  • 约束
  • 加速查找(空间换时间)

种类:

  • 普通索引:加速查找 normal
  • 主键索引:加速查找、不能为空、不能重复
  • 唯一索引:加速查找、不能重复 unique
  • 联合索引(联合唯一):多列组合为一个索引;联合主键索引和联合唯一索引及联合普通索引

加快查找:

  1. 无索引:原始数据文件中顺序查找,速度慢
  2. 有索引:另外创建索引文件,索引文件和原始数据有一定的对应关系,查找迅速
    • 索引种类:
      • hash索引
      • btree索引(多用):使用二叉树结构
    • 建立索引:
      1. 查快,增、删、改慢
      2. sql语句中where后=使用索引,快;like,不真正使用索引
      3. create (unique)  index  索引名  on  表名 (列名)  (唯一)普通索引
      4. drop  (unique)index  索引名  on  表名     删除索引
      5. create (unique)  index  索引名  on  表名 (列名1,列名2)  联合(唯一)索引;使用时遵循最左前缀匹配
    • 覆盖索引:指在索引文件中直接获取索引数据,而不用到原始数据中得到数据。
    • 合并索引:条件中用到多个单列索引
    • 组合所有效率 > 合并索引

频繁查找的列创建索引:创建和命中(面试中问不命中的情形)

  • 数据多时,避免使用like,在项目中做搜索一般用第三方工具
  • 避免使用函数如select  * from   user  where  reverse(name)='lyb';
  • 类型不一致
  • !=,>,or,order by

注意:

  • + 避免使用select  *
  • + 使用count(1)或count(列)
  • + 创建表时有定长的用char,并往前放
  • 组合索引代替多个单列索引
  • 尽量使用短索引
  • 连表时条件类型一致
  • + 索引散列值(重复少)不适合建立索引,如性别

执行计划:type:const、ref、system快

EXPLAIN SELECT * FROM useraccess WHERE access = '123'

慢日志:

C:\ProgramData\MySQL\MySQL Server 5.7\my.ini中# General and Slow logging.

转载于:https://www.cnblogs.com/lybpy/p/8245337.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值