mysql索引(一)

来源:互联网 发布:知乎主要用户群体 编辑:程序博客网 时间:2024/06/14 09:58

索引的分类

  • 主键索引
  • 唯一索引
  • 普通索引
  • 全文索引

为啥加索引查询会快?

没加索引前:数据库是按顺序检索,当检索到符合条件的项时不会立即返回,而是还会继续检索,直到检索完全部

加索引后:多了一份索引文件,而这个索引文件是BTREE数据格式,每一节点都相应存储着对应对应数据的物理地址。通过二叉树算法查找这个索引文件并返回找到的数据所以速度很快。

加索引会带来什么不好的?

1.占用一定的磁盘空间
2.影响dml速度,也就是影响增删改的速度。

什么时候加索引?以及什么时候会用到索引?

1.where 条件频繁用到并且不频繁修改的同时唯一性不差的字段。
有点拗口也就是同时满足一下三个条件:
1) where语句中频繁用到的的字段
2) 不会频繁被修改的字段
3) 唯一性不太差的字段。啥叫唯一性不太差的?就是说这个字段整张表不会就几个确定的值,比如性别:男 和 女 整张表就这两种值,这种就不要加索引

2.多列索引时,只有条件语句中用到索引左边的列时才会用到索引。

3.like语句:在like语句的最前面如果有可变字符的话就不会用到索引,比如like “%abc” ,like “abc”这种的就不会用到索引,但是 like “abc%”,like “abc” 可以用到索引。 如果非得在前面加上可变字符,请走全文索引或者搜索引擎

4. or 条件语句,只有or有关的字段都加上索引时,才会用到索引。尽量不用or语句。

索引查询

1.desc table名 ;
2.show index from table名 \G ;
3.show keys from table名 \G;

0 0
原创粉丝点击