Mysql如何使用索引

基本概念

索引是一种特殊的文件,按照某种算法记录了数据库表中数据的关键信息,通过查找该文件,能达到降低查询时间的目的。

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

索引存储类型

上面已经说过了,索引也是文件,只是比较特殊,分为两种:BTREE和HASH。具体为啥,先了解一下即可,即树和哈希值来存储字段。
MyIsAM和InnoDB存储引擎:只支持BTREE索引,也就是默认使用BTREE,不能够更换;
MEMORY 和 HEAP存储引擎:支持HASH和BTREE索引

索引的优势

  1. 所有的Mysql列类型都可以被索引,也就是可以给任意字段设置索引;
  2. 大大加快数据的查询时间

索引的缺点

 a. 创建索引和维护索引需要耗费时间,并且随着数据量的增加所耗费的时间也会增加;
 b. 索引页需要占用空间,数据表中的数据也会有最大上限值;如果存在大量的索引,索引文件可能会比数据文件更快达到上限值;
 c. 当对表的数据进行增加、修改、删除时,索引也要动态维护,降低了数据的维护速度。

单列索引

一个索引只包含单个列,但是一个表中可以包含多个单列索引。
先建个表:

CREATE TABLE t_student (
	id int not null,
	name VARCHAR(255) not null,
	age int DEFAULT 0,
	address VARCHAR(255) null
);

先建一个数据表t_student,包含四个字段id,name,age,address

普通索引

MySQL中基本索引类型,没有限制,允许在定义索引的列中插入重复值和空值,纯粹为了查询数据更快一点;建表时直接创建,我们以address建立索引

> CREATE TABLE t_student ( 	
      id int not null, 	
      name VARCHAR(255) not null, 	
>   
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值