mysql 索引

索引介绍:

高效获取数据的数据结构

使用B+树结构( 搜索树,并不一定是二叉树)

索引是存储在磁盘文件中的(可能是单独是索引文件中,也可能和数据一起存储在数据库文件中)

索引的优势和劣势

优势:

可以提高数据检索效率,降低数据 库的IO成本,类似于书的目录;

通过索引列对数据进行检索,降低数据排序的成本,降低了CPU的消耗;

劣势:

索引回占据磁盘空间;

索引虽然会提高查询效率,但是会降低更新表的效率

 

常用索引分类:

单列索引:

普通索引:mysql 中基本索引,没有什么限制,允许在定义索引的列中插入重复值和空值,纯粹是为了查询快一点;

唯一索引:索引列中的值必须是唯一的。但是允许为空值;

主键索引:是一种特殊的唯一索引,不允许有空值

组合索引:

在表中的多个字段组合上创建的一个索引;

组合索引的使用,需要遵循最左前缀原则

一般情况下,建议使用组合索引代替单列索引(主键索引除外)

 

sql语句优化

索引优化

为搜索字段(where 中的条件)、排序字段、select查询列等创建合适的索引(要考虑数据的业务场景,查询多还是增删多);

尽量创建组合索引病注意组合索引的创建顺序,按照顺序组织查询条件、尽量筛选粒度大的查询条件放到最左边

尽量使用覆盖索引,select 语句尽量使用明确字段,不要使用*

order by、 group by语句尽量使用到索引

其他优化:

尽量不适用count(*),尽量使用count(主键)

count(*):查询行数,遍历所有的行和列

count(列字段):查询指定列不为null 的行数,如果列可以为空,则count(*)不等于count(列),

count(1)

join两张表的关联字段最好都建立索引,而且最好字段类型是一只的

where 条件中尽量不要使用1=1、not in 语句(建议使用 not exists)

不用mysql 的内置函数,因为内置函数不会建立查询缓存

合理利用慢查询日志、explain执行计划查询、show profile查看sql执行时的资源使用情况

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值