索引是什么意思

【索引是什么意思】每个人在开发过程中都无法避免使用数据库索引,那么你了解数据库索引吗?接下来我简单说一下什么是数据库索引 。1.数据索引有什么用?其实数据库索引是为了让数据查询更高效 。二、什么是数据库索引?聚集索引(主键索引)
每个人在开发过程中都无法避免使用数据库索引,那么你了解数据库索引吗?接下来我简单说一下什么是数据库索引 。
1.数据索引有什么用?
其实数据库索引是为了让数据查询更高效 。
二、什么是数据库索引?
聚集索引(主键索引):在数据库中,所有行都根据主键索引进行排序 。
非聚集索引:是给常用字段添加索引 。
联合索引:是由几个字段组成的索引,称为联合索引 。
key‘idx_age_name_sex’ (‘age‘,’ name‘,’ sex‘)
联合索引遵循最左边的前缀原则 。什么意思?举个例子,如果一个学生表中的工会指数如上图,那么下面的A、B、C、D、E、F哪个会跟在指数后面?
A:从学生中选择*年龄=16岁,姓名=’小张’
B:从学生中选择*名=’小张’,性别=’男’
C:从学生中选择*姓名=’小张’,性别=’男性’,年龄=18岁
D:从学生中选择* 20岁,姓名=’小张’
e:从学生中选择*年龄!=15且姓名=’小张’
f:从学生中选择*年龄=15岁,姓名!=’小张’
a遵循最左边匹配原则,年龄在最左边,所以a取索引;
b直接从名字开始,不遵循最左边匹配原则,所以不遵循索引;
c以名字开头,但在索引中有最左边的年龄,mysql会自动改成其中年龄=’18 ‘,名字=’小张’,性别=’男’,所以还是遵循最左边的匹配原则;
d这是因为age20是一个范围,范围字段会结束范围后面的索引字段的使用,所以只取年龄索引;
e这个虽然遵循最左边的匹配原则,但是不遵循索引,因为!=不要转到索引;
f这个只取年龄指标,不取姓名指标,以上原因;
第三,哪些列不取索引?
学生表中的年龄、姓名两个字段被索引
键“idx_ age”(“age”),
键“idx_ name”(“name”)
1.像这样意味着%前面不跟指数,后面跟指数
A:从学生中选择*,其中“姓名”如“国王%”
B:从学生中选择*,其中“姓名”如“%小”
甲取指数,乙不取指数
2.如果索引列用于计算,则不采用索引
a:从年龄=108岁的学生中选择*
b:从8岁=18岁的学生中选择*
甲取指数,乙不取指数
3.对索引列使用函数,不要取索引
A:从学生中选*多联(‘姓名’,’哈’)=’王哈哈’;
B:从学生中选择*其中name=concat(‘王哈’,’ ha‘);
a不取指数,B取指数
4.使用了索引列!=不要索引,如下所示:
从学生年龄中选择*!=18
4.为什么要用B树做索引?
这可以指什么是B树
5.索引在磁盘上的存储?
聚集索引和非聚集索引的存储方式不同,那么它们是如何存储的呢?
有学生名单
创建表格“学生”(
` id`int(11)不为nullauto_ incrementcomment‘主键id‘,
` name`varchar(50) notnulldefault‘ ‘注释’学生姓名’,
` age`int(11)不为null默认0注释’学生年龄’,
主键(` id`),
key`idx_age` (`age`)、
键` idx_name` (`name`)
)engine=innodbdefaultcharset=utf8 comment=’学生信息’;
表格内容如下
Id是主键索引,名称和年龄是非聚集索引
1.磁盘中聚集索引的存储