SQL中的索引(index)

sql 中可以为数据列创建索引,具体语法见:http://www.w3school.com.cn/sql/sql_create_index.asp

索引有啥用?

提高 SELECT 语句的查询效率。当 WHERE 条件中包含索引列时,MySQL(以它为例)会根据索引列拿到数据表的子集,然后进行筛选;而不必先查询完整的数据表(当数据量很大时,效率会很低),再进行条件过滤。

注意:索引也有不适用的时候。如果一次性查询很多行(例如查询整张表的内容),使用索引反而会更慢。

Indexes are less important for queries on small tables, or big tables where report queries process most or all of the rows. When a query needs to access most of the rows, reading sequentially is faster than working through an index. Sequential reads minimize disk seeks, even if not all the rows are needed for the query.——MySQL 文档

主键(PRIMARY KEY)与唯一索引(UNIQUE INDEX)的关系和区别

  • 主键实现了 UNIQUE INDEX。可以说,主键是“唯一索引”;但不仅仅是。
  • 主键实现了 NOT NULL;唯一索引允许 NULL
  • 主键只能有一个;唯一索引可以有多个
  • 主键可以作为 clustered index(集群索引?)

参考资料

查阅一波资料后,大致明白了,理解却不够深入。随着日后后端经验的积累,应该会逐渐通透的。