SQL技术内幕-9 创建和删除索引

CREATE INDEX 语句用于在表中创建索引。

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

索引

您可以在表中创建索引,以便更加快速高效地查询数据。

用户无法看到索引,它们只能被用来加速搜索/查询。

注释:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

SQL CREATE INDEX 语法

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name
ON table_name (column_name)

  注释:"column_name" 规定需要索引的列。

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

  

CREATE INDEX 实例

本例会创建一个简单的索引,名为 "PersonIndex",在 Person 表的 LastName 列:

CREATE INDEX PersonIndex
ON Person (LastName)

  如果您希望以降序索引某个列中的值,您可以在列名称之后添加保留字 DESC

CREATE INDEX PersonIndex
ON Person (LastName DESC)

  假如您希望索引不止一个列,您可以在括号中列出这些列的名称,用逗号隔开

CREATE INDEX PersonIndex
ON Person (LastName, FirstName)

  

SQL DROP INDEX 语句

DROP INDEX table_name.index_name

  

时间: 2024-07-30 10:19:41

SQL技术内幕-9 创建和删除索引的相关文章

创建与删除索引

索引是加速查询的主要手段,特别对于涉及多个表的查询更是如此.本节中,将介绍索引的作用.特点,以及创建和删除索引的语法. 13.4.1  使用索引优化查询 索引是高速定位数据的技术,首先通过一个演示样例来了解其含义及作用,具体的介绍请參考第14章. 1.索引演示样例 如果对于10.3节所建的表,各个表上都没有索引,数据的排列也没有规律,如表13.3所看到的. 表13.3                                                     没有索引的student

mysql命令行下创建和删除索引简介

mysql命令行下创建和删除索引简介: mysql中创建索引可以使用CREATE TABLE语句,也可以用CREATE INDEX或ALTER TABLE来给表增加索引.索引的删除可以使用ALTER TABLE或DROP INDEX语句来实现. (1)使用ALTER TABLE语句创建索引.语法如下:alter table table_name add index index_name (column_list) ;alter table table_name add unique (colum

大数据技术之_20_Elasticsearch学习_01_概述 + 快速入门 + Java API 操作 + 创建、删除索引 + 新建、搜索、更新删除文档 + 条件查询 + 映射操作

一 概述1.1 什么是搜索?1.2 如果用数据库做搜索会怎么样?1.3 什么是全文检索和 Lucene?1.4 什么是 Elasticsearch?1.5 Elasticsearch 的适用场景1.6 Elasticsearch 的特点1.7 Elasticsearch 的核心概念1.7.1 近实时1.7.2 Cluster(集群)1.7.3 Node(节点)1.7.4 Index(索引 --> 数据库)1.7.5 Type(类型 --> 表)1.7.6 Document(文档 -->

ElasticSearch.net NEST批量创建修改删除索引完整示例

本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改索引,都是发起一个request新增或修改一条数据,当一次性修改几千条数据时,发起的requst请求过多容易导致429 Too Many Request的错误,单个新增修改索引就非常不适用.其实Nest有批量新增.修改索引的功能,批量删除也可以.现将项目中采用Elasticsearch的C#代码分享

SQL技术内幕二DDL

创建数据库: if db_id('DBTest') is nullcreate database DBTest 创建表 use eb_fy_data_test---use 切换所在数据库上下文 if object_id('UserTest','u') is not null drop TABLE UserTest CREATE TABLE UserTest {} 数据完整性 1.主键约束 alter table UserTest add constraint PK_UserTest Primar

PostgreSQL 查询、创建、删除索引

--查询索引 select * from pg_indexes where tablename='tab1'; --创建索引 tab1_bill_code_index 为索引名, create index tab1_bill_code_index on "db1".tab1(bill_code); --删除索引 drop index tab1_bill_code_index ; 原文地址:https://www.cnblogs.com/personblog/p/11368104.htm

oracle创建、删除索引等操作

1.创建索引 create index 索引名 on 表名(列名);12.删除索引 drop index 索引名;13.创建组合索引 create index 索引名 on 表名(列名1,,列名2);14.查询索引 --根据索引名,查询表索引字段select * from user_ind_columns where index_name='索引名';--根据表名,查询一张表的索引select * from user_indexes where table_name='表名';—————————

SQL Server ->> 分区表上创建唯一分区索引

今天在读<Oracle高级SQL编程>这本书的时候,在关于Oracle的全局索引的章节里面有一段讲到如果对一张分区表创建一条唯一索引,而索引本身也是分区的,那就必须把分区列也加入到索引列表中去,当然不一定要再第一列.后来自己就去SQL Server上也试了一下.果真和Oracle一样的道理.再看到后面章节算是理解了.因为如果表被分区了,其实就是每个分区等于一个索引树了.这也就是为什么在SQL Server下这张sys.partitions系统视图中每个partition对应了一个hobt_id

SQL技术内幕三

Select 分析一个查询实例 Select empid,year(orderdate) as orderYear,count(*) as orderCount From dbo.orderInfo where custid=71 group by empid,Year(orderdate) having count(*) >1 order by empid 以上语句在sql server内的执行顺序是 from--where--group by--having --select--order