2010-07-07 7 views
8

В SQL, при создании индекса базы данных, я требуется, чтобы дать указателю название, как и вЧто такое имя индекса SQL?

CREATE INDEX timestamp_index ON hit (timestamp); 

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

DROP INDEX timestamp_index; 

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

+0

Вам даже не понадобится имя индекса, чтобы удалить индекс, как вы могли бы сделать (если база данных поддерживала синтаксис): DROP INDEX hit (timestamp); – Eduardo

+0

Этот вопрос похож на мой вопрос: http://stackoverflow.com/questions/3356391/why-most-sql-databases-allow-defining-the-same-index-twice – Eduardo

ответ

1

Как еще вы бы указали индекс?

Существует, вероятно, также вход в систему.

+0

Как еще вы бы указали индекс для чего цель? Если он используется только встроенным ядром базы данных, мне не нужно указывать его имя. – 2010-07-07 00:39:48

+1

Изменение, удаление его, измерение его эффективности –

+0

Я получил вниз, чтобы сказать то же самое, что и все остальные? –

6

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

1

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

12

Вот несколько вещей, чтобы думать о том:

Как бы вы восстановить индекс?

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

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

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

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

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

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

BTW при создании primary keyclustered 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

+0

Я фактически использую SQLite прямо сейчас, если это какой-то интерес. – 2010-07-07 01:04:18

0

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

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

Смежные вопросы