首页 > 数据库 >SQL索引的创建与删除

SQL索引的创建与删除

时间:2022-12-26 19:01:31浏览次数:65  
标签:语句 INDEX 删除 CREATE MyTable 查询 索引 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 <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;

SQL索引的创建与删除_数据库

默认升序排列

 

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

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

执行下面语句查询:

SELECT Name, DateOfBirth
FROM MyTable;

SQL索引的创建与删除_搜索_02

 

 

五、删除索引

基本格式:

DROP INDEX MyTable.member_name_index;

 

 

 

 

 

 

 

标签:语句,INDEX,删除,CREATE,MyTable,查询,索引,SQL
From: https://blog.51cto.com/u_15921176/5970409

相关文章

  • SQL server的事务锁--概念篇
    在上一篇的SQL事务中我讲到了”事务是恢复和并发控制的基本单位“,但它究竟怎么来控制并发这个过程呢?这就要从事务中的锁这一概念说起。 一、概念在我看来,锁,就是一种手段,在......
  • SQL--WHERE子句相关用法
    【前言】小编今天来总结总结SQL中WHERE子句涉及到的相关知识点 【正文】利用WHERE自居过滤结果MyTableIdNameDateOfBirthAdress3索菲亚1997-09-01USA1贝拉1999-08-07CN......
  • SQL中的事务问题
    在日常生活中你们有没有遇到过这样的问题:我去银行取1000块钱,取款机也把我的余额减去了1000,可是取款机突然坏了,取款的口没吐出来钱,可是你的钱却已经扣了,这时怎么办?当然是找银......
  • SQL视图
    【前言】通常我们在数据库中查询数据时用的是SELECT语句,我们可以用SELECT语句查询任何数据库中的信息,只要数据库有,只要你要。利用SELECT语句,你可以将一个个表通过一些特定的......
  • SQL外部联合:right outer join、left outer join、full outer join
    SQL将外部联合分为了右外部联合(rightouterjoin)、左外部联合(leftouterjoin)、完全外部联合(fullouterjoin)3个类型。 左外部联合:LEFTOUTERJOIN      ......
  • 16、SQL操作JSON字段
    Mysql5.7版本以后提供一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(documentelements)的内部二进制(internalbinary)格式。一、Mysq......
  • 10、sqli-labs(盲注8-10)
    环境sqli-labsless8一、通过判断是单引号闭合http://192.168.1.119/sqli/Less-8/?id=1’--+二、我们查询一下数据库有多少字节http://192.168.1.119/sqli/Less-8/?id=1......
  • 关系型数据库学习手记——初见倾心PostgreSQL、MySQL、SQLite、MongoDB
    一、关系型数据库系统理论知识1.1学习笔记​​数据库系统概念读书笔记-引言​​数据库系统概念读书笔记-关系数据库数据库系统概念读书笔记-数据库发展史(上)数据库系统概念......
  • MySQL半一致读实验
    参考资料:https://dev.mysql.com/doc/refman/8.0/en/innodb-transaction-isolation-levels.htmlhttps://www.yisu.com/zixun/262123.html1、实验环境MySQL5.7RC隔离......
  • Python之PyMysql库
    PyMysql库导入PyMysql库:importpymysqlPyMysql连接对象连接数据库,获得一个PyMysql连接对象connconn=pymysql.connect(host=None,port=0,user=None,......