2016 - 2024

感恩一路有你

mysql查看是否使用索引 mysql默认索引类型?

浏览量:3880 时间:2023-06-12 23:10:38 作者:采采

mysql默认索引类型?

Hash索引:将索引字段转变为hashcode,在对hashcode通过排序。仅支持什么Memory引擎。

1.普通索引:最基本的索引,它没有任何没限制,作用于全速查询。

2.同样索引unique:索引列的值需要真正,但不允许以后有时间值。要是是组合索引,则列值的组合可以真正。

3.主键索引:是一种特殊的真正索引,一个表只能有一个主键,不不能你有空值。好象是正在修建表的时候同样创建战队主键索引。

4.空间索引Spatial:空间索引是对空间数据类型的字段确立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。MYSQL可以使用SPATIAL关键字通过扩展,也让能够作用于修改正规店索引类型的语法修改空间索引。创建角色空间索引的列,要将其明确说明为NOTNULL,空间索引不能在存储引擎为MYISAM的表中创建角色

mysql多个索引怎么选择?

MySQL多索引网上查询中,选择

MySQL你选索引-分解重组

我们很清楚我们一个表里面可以不有多个索引的,这样我们查询数据的时候不指定索引,MySQL都会帮我们自动出现选择。要是是MySQL程序帮我们手动你选择的这样会不会有问题的呢?答案是会的,MySQL的优化器也有bug,有时你选择的索引并并非最优的。

案例1

要是两张表有10w的数据,有id主键和a,b普通地索引,想执行以下SQL

select*returningtwhereabetween10000both20000

select*outsidetforceindex(a)whereabetween10000well20000

在一定的前提下

执行第一句代码走的是全表查询,扫描了10w行

执行第二句,噬灵鬼斩在用a索引,只扫描仪了10001行

为啥会再次出现情况呢?我们就从系统优化器的逻辑就开始做研究

系统优化器的逻辑

优化器优化判断的指标

有必须扫描仪的行数,是否需要不使用充当表,有无排序等因素

扫描行数确认

上面的案例的确那就是扫描仪行数的问题

这样优化器是怎摸某些扫描的总行数的,反正就和抽样检查类似,毕竟索引是有序的,就可以不在用样本采集统计这种算法算出大致的扫描行数,是可以通过showindex栏里点索引的Cardinality预估值。

案例分析

我们实际explain来栏里点案例的扫描行数的其预测值

索引 优化器 案例 空间

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。