@R星校长
什么是索引?
索引是一张特殊的表,该表保存了主键与索引字段,并指向实体表的记录。
先假设有一张表student
,表的数据有100
万条数据,其中有一条数据是 name="xiaoming"
,如果要拿这条数据的话需要写的sql
是
select * from student where name='xiaoming'
一般情况下,在没有建立索引的时候,MySQL
需要扫描全表及扫描100
万条数据找这条数据,这个效率实际上是非常慢的,那么有什么优化方法呢?答案就是索引。
如果我在name
字段上建立索引,那么 MySQL
只需要扫描一行数据及为我们找到这条name='xiaoming'
的数据,是不是感觉性能提升了好多咧….
单列索引分类和创建
我们使用最常见的是单列索引,分为主键索引、普通索引和唯一索引。
1.主键索引
主键索引一般在建表时创建,不允许有空值并且值唯一,最好是与表的其他字段不相关的列或者是业务不相关的列。一般会设为 int
而且是 AUTO_INCREMENT
自增类型的,例如一般表的 id
字段。
创建主键索引一般建表时使用primary
关键字,例如如下语句:
CREATE TABLE `student` (
`ID` int(11) NOT NULL A