msql索引

一、什么是索引?为什么要建立索引?
索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。

例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。

如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。其中MySQL中的索引的存储类型有两种:BTREE、HASH。 也就是用树或者Hash值来存储该字段,要知道其中详细是如何查找的,就需要会算法的知识了。我们现在只需要知道索引的作用,功能是什么就行。

二.几种常见索引:

  1. 单列索引
    1-1) 普通索引,这个是最基本的索引:CREATE INDEX account_Index ON award(account);
    1-2) 唯一索引,与普通索引类似,但是不同的是唯一索引要求所有的类的值是唯一的,这一点和主键索引一样.但是他允许有空值,
    CREATE UNIQUE INDEX account_UNIQUE_Index ON award(account);
    1-3) 主键索引,不允许有空值
  2. 组合索引
    一个表中含有多个单列索引不代表是组合索引,通俗一点讲 组合索引是:包含多个字段但是只有索引名称。
    CREATE INDEX nickname_account_createdTime_Index ON award(nickname, account, created_time);
    注意组合索引就是遵从了最左前缀,利用索引中最左边的列集来匹配行,这样的列集称为最左前缀,不明白没关系,举几个例子就明白了,例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成索引最左面的前缀,那么就不会是用索引,比如,age或者(name,age)组合就不会使用索引查询

  3. 全文索引
    就是在很多文字中,通过关键字就能够找到该记录。
    ALTER TABLE t4 ADD FULLTEXT(info) info是一个字段
    eg:INSERT INTO t4 VALUES(8,’AAA’,3,’text is so good,hei,my name is bob’),(9,’BBB’,4,’my name is gorlr’);
    搜索:SELECT * FROM t4 WHERE MATCH(info) AGAINST(‘gorlr’);

三.优缺点:
优点:大大加快数据的查询速度
缺点:创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加,当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值