Mysql 索引 简介

Mysql索引

  1. 索引的分类
  2. 索引的创建
  3. 索引的注意事项

 

什么是索引

索引是存储引擎用于快速查找记录的一种数据结构。

索引由数据库中一列或者多列组成,作用是提高表的查询速度。

索引的优点,提高检索数据的速度。

索引的缺点,创建和维护索引需要时间,会减慢写入的速度。

 

索引的分类

  1. 普通索引
  2. 唯一索引
  3. 全文索引
  4. 单列索引
  5. 多列索引
  6. 空间索引
  7. 主键索引
  8. 组合索引

 

创建索引

CREATE TABLE tbl_name(

    字段名称 字段类型 [完整性约束条件],

    ,,,,

    [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY[索引名称](字段名称[(长度)])

    [ASC|DESC]

);

 

或者

1.CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名称 ON 表名{字段名称[(长度)] [ASC|DESC]}
2.ALTER TABLE tbl_name ADD [UNIQUE|FULLTEXT|SPATIAL] INDEX索引名称(字段名称[(长度)][ASC|DESC]);
 
删除索引
DROP INDEX 索引名称 ON tbl_name
 
普通索引的创建:
create index index_name on table_name(column_name)
唯一索引的创建
create unique index 索引名 on 表名(列名)
主键索引的创建
alter table 表名 add primary key(列名);
 
索引需要注意的事项
1.like ‘%XXX’,不走索引
2.使用函数不走索引
  select * from tb1 where reverse(name) = 'wupeiqi';
  或者使用or
 select * from tb1 where nid = 1 or email = 'seven@live.com';
  如果or的两个条件中都有索引,此处会走索引。
2.1 索引列不能参与计算,保持列“干净”。
3.类型不一致不会走索引
例如列是字符串传的是整数
select * from tb1 where name = 999;
4.组合索引最左前缀。
5.索引散列值重复少不适合建索引,例:性别不适合
尽量选择区分度高的列作为索引,区分度的公式是count(distinct col)/count(*),表示字段不重复的比例,比例越大我们扫描的记录数越少,
唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0

6.大的字段上不适合建索引

 

 

posted @ 2016-08-22 16:00  志昌  阅读(214)  评论(0编辑  收藏  举报