SQL语句(五) 索引建立

全屏阅读
  • 基本信息
  • 作者:
  • 作者已发布:925篇文章
  • 发布时间:2021年04月19日 23:08:03
  • 所属分类:Mysql优化
  • 阅读次数:1989次阅读
  • 标签:

一、实例 

1.创建唯一性索引
SET STATISTICS TIME ON
SELECT * FROM customer WHERE name ='阿爆' ;
SET STATISTICS TIME OFF
 
CREATE UNIQUE INDEX customer_name ON customer(name);--在customer表上的name列创建唯一性索引
2.创建函数索引在零件表的零件名称字段上创建一个零件名称的函数索引
sql server 不支持函数索引,因此需要添加长度列,在该列上创建索引
ALTER TABLE part ADD name_length as LEN(name) persisted
SET STATISTICS TIME ON
SELECT * FROM part WHERE name_length=5 ;
SET STATISTICS TIME OFF
 
CREATE INDEX part_name ON part(name_length);
3.创建复合索引
SET STATISTICS TIME ON
SELECT * FROM customer A,customer B
WHERE A.name='阿倍仲麻吕'AND B.nationkey<200;
SET STATISTICS TIME OFF
 
CREATE INDEX name_nationkey ON customer(name,nationkey);
 
4.创建聚簇索引
如果在建表的时候建立了主键,没有建立聚簇索引,那么默认主键是聚簇索引
CREATE TABLE region2(/*地区表*/
  regionkey INTEGER ,/*地区编号*/
  name CHAR(25),     /*地区名称*/
  comment CHAR(152)  /*备注*/
);
 
CREATE CLUSTERED INDEX region_name ON region2(name);
5.创建哈希索引
ALTER TABLE part ADD hash_name
AS CAST(HASHBYTES('MD2',name)AS UNIQUEIDENTIFIER) PERSISTED;
CREATE INDEX part_name ON part(hash_name);
 
SET STATISTICS TIME ON
SELECT * FROM  part WHERE hash_name = CAST(HASHBYTES('MD2','竹炭空气清新篮') AS UNIQUEIDENTIFIER)
SET STATISTICS TIME OFF
6.修改索引名称
CREATE INDEX name_nationkey ON customer(name,nationkey);
sp_rename'customer.name_nationkey','name_nationkey2','INDEX';
7.分析某个句子是否使用了索引
SELECT * FROM customer A,customer B
WHERE A.name='阿倍仲麻吕'AND B.nationkey<200;
8.验证索引效率
  SELECT DISTINCT name
FROM part;
CREATE INDEX part_name ON part(name);
--DROP INDEX part_name ON part;

二、注意

1、在创建唯一性索引的过程中出现了下面图片中的错误,后来经查询发现part表中name列上的值并不唯一,所以创建唯一索引会失败。

image.png

2.在创建聚簇索引时发现,如果在建表的时候建立了主键,没有建立聚簇索引,那么系统默认主键是聚簇索引,因此想要在有主键的表上实现建立聚簇索引,只能先删除主键,这样做其实并不实际。

3.创建索引可以加快查询的速度,但在试验中我发现并非所有的索引都会加快查询速度,因为索引本身就会导致额外的开销;此外,也并非所有的表都适合建立索引,如果一个表经常更新,索引往往会导致数据的物理顺序发生变化,付出的代价较大。

————————————————

版权声明:本文为CSDN博主「l୧(๑•̀◡•́๑)૭H」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/shujian_tianya/article/details/81067999

顶一下
(0)
100%
订阅 回复
踩一下
(0)
100%
» 郑重声明:本文由mpxq168发布,所有内容仅代表个人观点。版权归恒富网mpxq168共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。

目前有 0 条留言 其中:访客:0 条, 博主:0 条

给我留言

您必须 [ 登录 ] 才能发表留言!