mysql之索引系列

索引这个词对于开发人员而言并不陌生,但是要说索引是什么,似乎又说不清楚,总之在我的脑海里就知道索引相当于一本书的目录,方便快速找到内容,因为这就是之前老师这么说的,我也就记住了这个,其他什么的一概不知道。甚至几次面试的时候,面试官问我索引怎么用的,我都不知道怎么回答。我之前做的项目确实没怎么用到索引,所以对这个没有关注过。最近做的项目用到了索引,感觉有必要记录一下,方便以后温故,也希望给和我一样的小白一点学习参考。

首先需要强调一点的是 数据库查询远不是我们想象中的那么牛逼,我一直认为(可能很多人和我一样认为)数据库查询很牛逼了,根据条件查询,select *from table where id=' ',嗖的一下出现结果了,哪里需要什么索引。这是我之前脑中一直的观念。但是我现在不这么认为了。

解释一下为什么你觉得数据库查询快,就上面的语句而言,你觉得快,可能因为两个原因:第一:你查询的条件是ID,这个很有可能是主键,而对于主键,数据库会默认给你创建主键索引,所以你以为你没有用索引,其实不然,第二:就是你数据库的数据量太少。不需要太多,你可以用500万数据测试一下。假如你有张user表,字段有,id,name,age,idcard,如果你没创建任何主键什么的,你明显感觉慢好多,这个时候你就会和我一样的感慨了,原来数据库不是我想象中的那么牛逼的!

扯了那么多,还是希望重视一下索引的作用吧,不要认为它有没有都一样,没什么用,这个观念要不得。

索引的种类有很多

1:前面有讲到主键索引,这个你创建主键的时候自动创建了,你可以不用管,下面给出创建主键的sq语句,

建表时直接创建主键1

CREATE TABLE tableName (
id INT PRIMARY KEY,
NAME VARCHAR(50)
)

建表时直接创建主键2:

CREATE TABLE tableName (
id INT,
NAME VARCHAR(50),
PRIMARY KEY(id)
)

建表后,再添加主键

CREATE TABLE tableName (
id INT,
NAME VARCHAR(50)
);

ALTER TABLE tableName ADD PRIMARY KEY(id);

注意:主键索引只能有一个

2.唯一索引

建表时直接创建唯一索引1:关键字:unique key

CREATE TABLE tableName(
id INT,
NAME VARCHAR(50),
id_no VARCHAR(20) UNIQUE KEY

)

建表时直接创建唯一索引2

CREATE TABLE tableName(

id INT,
NAME VARCHAR(50),
id_no VARCHAR(20),
UNIQUE KEY(id_no)

)

建表后,再添加唯一索引

CREATE TABLE tableName(
id INT,
NAME VARCHAR(50),
id_no VARCHAR(20)
);

ALTER TABLE tableName ADD UNIQUE KEY(id_no);

普通索引

CREATE TABLE tableName(
id INT,
NAME VARCHAR(50),
id_no VARCHAR(20),
INDEX (id_no)

);

创建索引时可以指定名或不指定,不指定默认以列名作为索引名,index index_name(id_no);

建表后:

CREATE TABLE tableName(
id INT,
NAME VARCHAR(50),
id_no VARCHAR(20)
);

ALTER TABLE tableName ADD INDEX index_idno(id_no);

用的较多的就是这些了,其他一些什么组合索引,全文索引很少用到,有兴趣自行百度。

猜你喜欢

转载自blog.csdn.net/chenpuzhen/article/details/80693430