索引基础
关于索引的知识可以看:SQL索引(INDEX)。
简单概括就是:为数据库某些字段增加索引是可以加快查询速度的,并且一个表是可以创建多个索引的,而一个索引可以包含多个字段。
如果不使用索引,则数据库引擎会遍历整个表,速度毫无疑问会变慢。
索引也是需要维护的,不合适的索引会起到反作用!
在创建表的同时创建普通索引的sql:
CREATE TABLE index1 (id INT ,
name VARCHAR(20) ,
sex BOOLEAN ,
INDEX ( id)
);
更多的其它索引可看这里:索引。
主键索引和非主键索引
主键索引指的就是在主键上做索引,而非主键索引也就是在非主键上加索引。需要明白的是,主键索引和非主键索引是有区别的,主键索引存放的值是整行字段的数据,而非主键索引上存放的值不是整行字段的数据,而存放主键字段的值。
因此在使用主键索引查询的时候,直接就可以获得想要的数据,而用非主键索引则会先查询到主键,之后根据主键查询到具体的信息。具体的可看这篇解说。
那么问题来了:如果表没有主键那么非主键索引存储的是什么?
我们讨论的数据库是基于MySql的InnoDB。具体解释可看如下:
MySQL - MySQL没有主键怎么办?会自动生成主键么?自动生成的主键有什么问题?
一个非常有意思的博客:点这。