索引作为SQL优化查询的一种方法,它可以很好的帮助我们加快数据的查询速度,那为什么我们不去正确的使用它呢?
一、什么是索引?
索引是一种特殊的查询表,数据库搜索引擎可以使用它加速数据检索。它们也组织数据库存储数据的方式
索引就好像我们书中的目录,是这一本书的综合,告诉你在书的什么地方能够找到一个特定的向,一看目录就可以看到你要找的东西在哪一页,不用从书的起始页开始,缩减了你的查询时间。
目的:加快对表中记录的查找或排序
二、什么时候使用索引?
对于一些我们经常需要搜索的列上,可以使用索引,加快搜索速度
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度
对于那些在查询中很少使用或者参考的列不应该创建索引
对于那些只有很少数据值的列也不应该增加索引
三、优缺点
优点:1.能够加快表与表之间的连接速度,这对于提高数据的参考完整性方面具有重要作用
2.能提高数据的搜索及检索速度,符合数据库建立的初衷,例,SELECT查询和WHERE子句
3.在信息检索过程中,若使用分组及排序子句进行时,通过建立索引能有效的减少检索过程中所需的分组及排序时间, 提高检索效率
缺点:1.减慢数据的输入速度,例,UPDATE语句和INSERT语句
2.在数据库建立过程中,需花费较多的时间去建立并维护索引,特别是随着数据总量的增加,所花费的时间将不断递增
3.在数据库中创建的索引需要占用一定的物理存储空间
MyTable
Id | Name | DateOfBirth | Adress |
3 | 索菲亚 | 1997-09-01 | USA |
1 | 贝拉 | 1999-08-07 | CN |
2 | 爱德华 | 1998-04-20 | CN |
4 | 雅各布 | 1998-11-28 | FA |
四、创建索引
创建索引需要使用CREATE INDEX语句,它允许用户命名索引、指定表和需要索引的单个列或多个列、指定索引是按照升序还是降序排列。基本格式如下:
单列索引:
CREATE INDEX <index_name> ON <table_name> (<column_names>)
多列索引:当用户经常搜索多列时
CREATE INDEX <index_name> ON <table_name> (<column_name1,column_name2>)
执行下面语句,向MyTable表中添加一个名为member_name_index的索引,索引了Id列和Name列:
CREATE INDEX member_name_index ON MyTable (Id, Name);
执行下面语句查询:
SELECT Id, Name FROM MyTable;
默认升序排列
唯一索引(先根据姓名按照降序排序结果,然后根据出生日期排序)
CREATE UNIQUE INDEX member_name_indx ON MyTable (Name DESC, DateOfBirth);
执行下面语句查询:
SELECT Name, DateOfBirth FROM MyTable;
五、删除索引
基本格式:
DROP INDEX MyTable.member_name_index;