索引的概念
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
索引的作用
- 索引他的主要作用就是对数据进行排序,然后加快查询数据库数据的速度。
- 索引可以保证数据记录的唯一性(创建唯一性索引)。
- 在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。
索引的优缺点
优点
1.加快查找数据的速度(因为降低了数据的IO成本,这个后面会提到);
2.通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗。
3.实现表与表之间的参照完整性;
4.在使用ORDER by、group by子句进行数据检索时,利用索引可以减少排序和分组的时间。
缺点
1.索引会占用额外的磁盘空间(索引是存放在磁盘中而非内存)
2.索引会降低数据库的维护速度,当我们想要对数据库进行增删改的时候,那么同时索引也需要及时更新。
3.创建索引和更新索引需要一定的时间。
基本的索引类型
普通索引
最基本的索引类型,没有唯一性之类的限制。普通索引可以通过以下几种方式创建:
创建索引,CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,ALTER TABLE tablename ADD INDEX [索引的名字]