SQL索引的创建与删除

索引作为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 
ON  ()

 

多列索引:当用户经常搜索多列时

CREATE INDEX 
ON  ()

执行下面语句,向MyTable表中添加一个名为member_name_index的索引,索引了Id列和Name列:

CREATE INDEX member_name_index
ON MyTable (Id, Name);

执行下面语句查询:

SELECT Id, Name
FROM MyTable;

SQL索引的创建与删除_第1张图片默认升序排列

 

唯一索引(先根据姓名按照降序排序结果,然后根据出生日期排序)

CREATE UNIQUE INDEX member_name_indx
ON MyTable (Name DESC, DateOfBirth);

执行下面语句查询:

SELECT Name, DateOfBirth
FROM MyTable;

SQL索引的创建与删除_第2张图片

 

 

五、删除索引

基本格式:

DROP INDEX MyTable.member_name_index;

 

 

 

 

 

 

 

你可能感兴趣的:(SQL)