Для чего нужно имя индекса SQL? - PullRequest
10 голосов
/ 07 июля 2010

В SQL, когда я создаю индекс базы данных, мне нужно дать индексу имя, как в

CREATE INDEX timestamp_index ON hit (timestamp);

Единственное время, когда это имя кажется необходимым, - это если я хочу удалить индекс с помощью

DROP INDEX timestamp_index;

Есть ли другое использование имени индекса?

Ответы [ 6 ]

14 голосов
/ 07 июля 2010

Вот несколько вещей, о которых стоит подумать:

Как бы вы перестроили индекс?

Как бы вы дефрагментировали / реорганизовали индекс?

как бы выизменить индекс?

Как бы вы посмотрели на индекс, чтобы увидеть, какие столбцы в нем есть?

При просмотре плана выполнения, как узнать, какой индекс использовался?

Как бы вы отключили индекс при выполнении BULK INSERT / BCP?

Как бы вы использовали sys.dm_db_missing_index_details DMV, если вы не знаете имя?

Кстати, когда вы создаете primary key a 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

6 голосов
/ 07 июля 2010

Иногда необходимо выполнить подсказку по индексу, чтобы вы указали обработчику запросов, какой индекс он должен использовать. Если ваши индексы не имеют имен, вы не можете сделать это.

3 голосов
/ 07 июля 2010
ALTER INDEX timestamp_index ...

T-SQL ссылка

1 голос
/ 07 июля 2010

Это также полезно при просмотре / просмотре планов выполнения (по крайней мере, в SQL Server), поскольку используемые индексы отображаются по имени.

1 голос
/ 07 июля 2010

Как еще вы можете определить индекс?

Вероятно, логирование также прикреплено.

0 голосов
/ 07 июля 2010

Я часто чувствую то же самое по отношению к именам файлов.Должно ли имя файла mp3 содержать метаданные (исполнитель, альбом, не подкаст и т. Д.), Когда атрибуты файла работают лучше?Файлы на моем iPod не похожи на соответствующие имена файлов на моем жестком диске, потому что он использует индекс, и мне не нужно было придумывать имя для , который индекс!

В отличие от имени элемента данных, имя индекса является произвольным.Идеальный индекс - это тот, который создается и навсегда «присматривается» системой, поскольку система знает лучше.К сожалению, реальность такова, что в редких случаях вам может понадобиться что-то с этим сделать (например, бросьте это!).Вы можете обратиться к системному словарю, чтобы определить индекс на основе его атрибутов, обычно только столбцов, которые он содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...