В SQL, когда я создаю индекс базы данных, я обязан давать индексу имя, как в
CREATE INDEX timestamp_index ON hit (timestamp);
Единственное время, когда это имя, кажется, необходимо, - то, если я хочу удалить индекс с
DROP INDEX timestamp_index;
Есть ли какое-либо другое использование имени индекса?
Вот пара вещей, о которых стоит подумать:
Как бы вы перестроили индекс?
Как бы вы дефрагментировали / реорганизовали индекс?
как бы вы изменили индекс index?
Как бы вы посмотрели на индекс, чтобы увидеть, какие столбцы в нем?
При просмотре плана выполнения, как вы узнаете, какой индекс был использован?
Как бы вы отключили индекс при выполнении BULK INSERT / BCP?
Как бы вы использовали DMV sys.dm_db_missing_index_details
, если вы не знаете имя?
Кстати, когда вы создаете первичный ключ
a кластерный индекс
будет создан по умолчанию, 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
Иногда необходимо сделать подсказку индекса, то есть указать механизму запроса, какой индекс он должен использовать. Если у ваших индексов нет имен, вы не сможете этого сделать.
Как еще можно определить индекс?
Возможно, к нему также прилагается журнал.
Я часто так же отношусь к именам файлов. Должно ли имя файла mp3 содержать метаданные (исполнитель, альбом, не подкаст и т. Д.), Если атрибуты файла работают лучше? Файлы на моем iPod не похожи на соответствующие имена файлов на моем жестком диске, потому что он использует индекс, и мне не нужно было придумывать имя для , который индекс!
В отличие от имени элемента данных, имя индекса произвольно. Идеальный индекс - это тот, который создается и постоянно «под присмотром» системы, насколько ей известно. К сожалению, реальность такова, что в редких случаях вам может потребоваться что-то с этим сделать (например, бросить!). Вы можете обратиться к системному словарю, чтобы идентифицировать индекс на основе его атрибутов, обычно только столбцов, которые он включает.
Это также полезно при просмотре / проверке планов выполнения (по крайней мере, в SQL Server), поскольку используемые индексы отображаются по имени.