什么是SQL索引名称?

时间:2010-07-07 00:33:22

标签: sql indexing

在SQL中,当我创建数据库索引时,我需要为索引指定一个名称,如

CREATE INDEX timestamp_index ON hit (timestamp);

这个名称似乎唯一需要的时候是我想用

删除索引
DROP INDEX timestamp_index;

是否还有其他用途的索引名称?

6 个答案:

答案 0 :(得分:14)

以下是需要考虑的几件事:

您将如何重建索引?

您如何对索引进行碎片整理/重组?

你会如何改变指数?

您如何查看索引以查看其中的列?

查看执行计划时,您如何知道使用了哪个索引?

在执行BULK INSERT / BCP时如何禁用索引?

当您不知道名字时,如何使用sys.dm_db_missing_index_details DMV?

BTW创建primary key时默认情况下会创建clustered index,SQL Server会为您命名

create table bla  (id int primary key)
go

select * from sys.sysobjects s 
join sys.sysobjects s2 on s.parent_obj = s2.id
where s2.name = 'bla'

这是为该索引生成的名称 PK__bla__3213E83F66603565

答案 1 :(得分:6)

有时需要进行索引提示,告诉查询引擎它应该使用哪个索引。如果您的索引没有命名,则无法执行此操作。

答案 2 :(得分:3)

ALTER INDEX timestamp_index ...

T-SQL link

答案 3 :(得分:1)

您如何识别索引?

也可能附加了日志记录。

答案 4 :(得分:1)

在查看/查看执行计划时(至少在SQL Server中),它也很有用,因为使用的索引是按名称显示的。

答案 5 :(得分:0)

我经常对文件名有同感。当文件的属性做得更好时,mp3文件名是否需要包含元数据(艺术家,专辑,不是播客等)?我的ipod上的文件与我硬盘上的相应文件名不一样,因为它使用了一个索引,我不需要为 索引想出一个名字!

与数据元素名称不同,索引的名称是任意的。理想的索引是一个被创建的索引,并且系统永远更加“关注”,因为系统最了解。可悲的是,现实情况是,在极少数情况下,您可能需要对它做一些事情(例如放弃它!)。您可以引用系统字典来根据其属性来标识索引,通常只是它所包含的列。