MySQL 索引

索引是为了减少查询次数而出现的概念


索引在一定程度增加了查询的速度,但是也会降低增删改的速度,因为有了索引之后,再添加或者删除时,就必须同时修改用于

标记索引的文件


顺便说个面试题,大数据SQL文件换数据库时,如何快速导入?

1.删除空表的索引

2.集中导入数据

3.数据导入完毕后,再集中创建索引

因为如果一条一条创建索引,那会很慢,集中创建缺速度却很快


MySQL索引算法分为 二叉树 和 hash 索引      二叉树可以把查询次数降低到  log2N ,例如从  1 2 3 4 5 6 7 获取到 4   (后面的全文索引是一种特殊的算法。)


二叉树会把其分为


          4

   2          6

1    3   5   7


hash 理论上可以1次就查询到,原理是先为每个值算出一个hash值,然后再分配空间,查询的时候,也是先算出要查询的hash值,然后直接去对应的空间

获得值.




MySQL索引主要分为

普通索引 : 单纯的加快查询速度

唯一索引 :指定的列上不能出现重复的值,一张表上可以有多个唯一索引的列

主键索引:主键不能重复,一张表上只能有一个主键索引

全文索引:fulltext index (只可作用于MyISAM 引擎的表,现在大多都是INNODB引擎,这个就不说了)  对中文意义也不大,mysql很难为其建立索引

mysql5.5以后innodb也支持

停止词是针对全文索引说的,全文索引的字段一般都是一段比较长的文本,比如

I AM FROM CHINA, I LIKE ZHOUXINGXING .    停止词值比较常出现的单词或文字,比如 is am i 的这些,这些MySQL是不会为期加入什么索引的,称为停止词



查询所引的语法    show index from 表名; \G



KEY_NAME :PRIMARY 为主键索引

Column_Name 作用在那一列上

INDEX_TYPE 索引算法     BTREE是 二叉树



添加索引    alter table 表名 add index 索引名(列名);   索引名不写默认为列名

 (index -普通索引 unique-唯一索引 fulltext-全文索引 primary-主键索引)

为book的title 加了普通索引后  alter table book add index title(title);  再查询表格,如下图所示




删除索引    alter table 表名 drop index 索引名;

 alter table 表名 drop index primary key ; 删除主键比较特别



索引使用场景


不要过度索引

不要索引太集中的值

例如  男和女

索引尽量索引散列的值,在where 后面的字段考虑索引



完~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值