索引额外问题(定位优化慢查询、最左匹配)

  • 为什么要使用索引?
    因为索引能够让我们避免全表扫描去查找数据。提升检索效率

  • 什么样的信息能成为索引
    主键为一键等只要能够让数据呈现出一定区分性的字段

  • 索引的数据结构
    主流是B+树,还有哈希结构、BitMap等。其中MySQL不支持BitMap,同时基于InnoDB和MyISAM的MySQL不显示支持Hash

衍生出来的问题,以mysql为例

  • 如何定位并优化慢查询Sql

1、根据慢日志定位慢查询sql
2、使用explain等工具分析这条sql
3、修改sql或者尽量让sql走索引

-show variables like ‘%quer%’;
-show status like ‘%slow_queries%’;
set global slow_query_log = on;
set global long_query_time = 1;

show variables like ‘%quer%’;
show status like ‘%slow_queries%’

制造慢查询
select count(id) from person_info_large;
(explain)select name from person_info_large order by name desc;

explain关键字段:
type:
出现 index或者all就有可能需要优化了
extra:
在这里插入图片描述
优化:
例如name没有索引:
加索引: alter table person_info_large add index idx_name(name);
select name from person_info_large order by name desc;

  • 联合索引的最左匹配原则的成因

最左前缀匹配:会一直向右匹配直到遇到范围查询(>,<,between,like)就停止匹配。
=和in可以乱序。
第一个字段是绝对有序的

  • 索引是建立的越多越好吗

不是,
1、优先数据小的表不需要建立索引,建立会增加额外的索引开销
2、数据变更需要维护索引,因此更多的索引意味着更多的维护成本
3、更多的索引意味着也需要更多的空间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值