【数据库-mysql】索引、视图与触发器
第七章 索引、视图与触发器
7.1 索引
7.1.1 索引概述
索引的简历是为了加快查询速度。暴力查询的平均时间复杂度为O(N),一般使用树索引LOGn或者散列索引O(1)。索引之多一能加快查询速度,可以认为是对数据进行了重组。
有两种创建索引的方法:
1二叉树
2哈希:利用设计的散列函数将数据作为输入地址作为输出,查询的时候再次用散列函数拿到地址然后直接去改地址即可。
优点:
1加快了查询的速度
2 加快表之间的连接,在实现数据的参会完整性方面有意义
3 在order by group by字句中,减少分组排序的时间
缺点:降低了增删改的速度,索引文件有可能比数据文件还打。
情景:很多数据,15个字段,10个字段加了索引,现在需要换服务器,如何加快速度?
先把索引删除,然后导数据,最后重新加上索引。
7.1.2 索引分类
1、普通索引:仅仅是为了加快查询速度 KEY INDEX
2、唯一索引:行上的值不能重复UNIQUE
主键索引:主键必唯一,但是唯一索引不一定是主键,一张表上只能有一个主键,但是 可以有多个唯一索引。
3、全文索引 FULLTEXT
4、空间索引 SPATIAL
5、单列索引
6、多列索引
7.1.3 索引的设计原则
1索引并非越多越好,不过度索引
2 避免对经常更新的表建立索引
3 数据量小的时候不要建立索引
4过于集中的值不要添加索引,因为添加了也没有意义。例如100个用户,50个男50个女,为性别添加索引后,查询女,还是要面向50个用户。
5 对经常排序、分组和连接查询的字段创建索引。
7.1.4 创建索引
1 创建表的时候创建索引
2有两种方法在已经建过的表上创建索引
用 create index on
用alter table
ALTER TABLE 表名ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX [索引名](字段名);
ALTER TABLE 表名ADD PRIMARY KEY (字段名); # 添加主键
在创建非普通索引的时候 index可以省略
3删除索引
ALTER TABLE 表名 DROP INDEX 索引名;
ALTER TABLE 表名 DROP PRIMARY KEY;
在查询语句前添加EXPLAIN可以查看是否使用了索引。
4全文索引与停用词
语法:mysql> select 列名1, match(全文索引)against("检索词") from 表名;
例子:mysql> select name, match(intro)against("Knight") from userinfo;
查看匹配度:mysql> select 列名1, match(全文索引)against("检索词") from 表名;
停用词是经常使用的次,如果用停用词作为被检索的词语,返回为空。
上一篇: 数据库———事物,视图,索引,触发器
下一篇: Vue开发与调试工具