mysql 索引

不建立索引查找一条数据 mysql就会从第一条开始全表扫描

mysql 索引就是排好序的数据结构

mysql 索引的数据结构

1.二叉树--->性能不高,也是全表扫描

2.红黑树-->有二叉树的特性 红黑树比二叉树的效率高

3.hash表

4.B-tree

mysql用的索引用的数据结构是B+树

索引失效的的情况

1.like以%开头索引无效 like以%后缀的索引有效

2.or语句前后不是都为索引时失效

3.在索引列上加函数,计算,以及类型转换索引无效

索引的原理 以文件的形式存储在磁盘中,原理为以空间换时间

mysql索引的创建的原理是提升查询

  1. 存储方式区分

物理上分为  B-树索引和 HASH 索引两类

mysql索引的五种种类型

1.主键索引

2.唯一索引

3.普通索引 单列索引

4.全文索引

5.组合索引 复合索引

具体解释

① 普通索引(单列索引) 普通索引(单列索引):单列索引是最基本的索引,它没有任何限制。

② 复合索引(组合索引) 复合索引:复合索引是在多个字段上创建的索引。复合索引遵守“最左前缀”原则,即在查询条件中使用了复合索引的第一个字段,索引才会被使用。因此,在复合索引中索引列的顺序至关重要

③ 唯一索引

唯一索引:唯一索引和普通索引类似,主要的区别在于,唯一索引限制列的值必须唯一,但允许存在空值(只允许存在一条空值)。

④ 主键索引 主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引:

⑤ 全文索引

在一般情况下,模糊查询都是通过 like 的方式进行查询。但是,对于海量数据,这并不是一个好办法,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。

目前只是在varchar char text上支持全文索引

主键索引和唯一索引的区别

唯一索引允许有空值

查询表中索引的语句

show index form table

索引创造的地方

1.在经常要搜索的列上

2.在作为主键的列上

3.在经常链接的join列上

4.经常根据范围查询的列上

5.排序的列上

6.where查询的列上

创建索引

creat index 索引名称 on 表明(字段名称)

删除索引

drop index 索引名称 on 表明

索引创建的地方

where 从句

group by 从句

order by 从句

on 从句

索引的缺点

1.索引需要空间成本,每一条索引都要占据物理存储空间

2.会降低表的增删改的效率

mysql索引优化

1.选择合适的字段建立索引

2.Explain优化查询检测

3.遵循最左的原则最左前缀匹配原则

4.不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描

5.Like查询要当心,%不要放第一

6.只访问索引的查询(索引列和查询列一致),减少select *  查出来的都是索引

7.mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描

8.OR改UNION效率高

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

m0_37540251

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

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

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

打赏作者

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

抵扣说明:

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

余额充值