Когда я создаю первичный ключ в таблице оракула, почему он создает по умолчанию «кластерный» индекс. В чем причина этого автоматического создания кластерного индекса для создания первичного ключа? это просто предпочтение дизайнера Oracle, что он разработал оракул таким образом?Почему первичный ключ автоматически создает кластерный индекс
ответ
Oracle создает индекс для охранить уникальное ограничение, где нет уже существующего индекса не подходит. Без индекса Oracle должен будет сериализовать операции (например, блокировку таблицы) всякий раз, когда кто-то пытается вставить или удалить строку (или обновить PK).
В отличие от MS-SQL Server этот индекс не кластеризуется в таблицах кучи (организация по умолчанию по умолчанию), то есть этот индекс не изменит основную структуру таблицы и естественный порядок. Строки не будут переупорядочены, когда Oracle создаст индекс. Индекс будет B-tree index и будет существовать как отдельный объект, где каждая запись указывает на строку в основной таблице.
Oracle не имеет кластерного индекса как MS SQL, однако indexed-organized tables делит некоторые свойства с таблицами с индексированием кластеров. ПК является неотъемлемой частью таких таблиц и должен быть указан во время создания.
(Oracle также имеет table clusters, но это совершенно другая концепция).
Вот почему, когда вы разрабатываете приложения для SQL Server, вы можете сказать 'Select * from table' и Oracle, вам нужно сделать' Select * from table Order By ... '. Потому что, когда вы кластеризованный индекс PK, он сортирует материал для вас автоматически. –
@ t.s. только если вы хотите, чтобы строки, упорядоченные с помощью pk, очевидно =) Также я бы не стал полагаться на естественное упорядочение без предложения ORDER BY: что произойдет, если оптимизатор изменит свой путь/метод доступа? (ответ: вы получите строки из строя) –
Это был просто пример того, что кластеризованный индекс делает вам: o) –
Создание индекса - это базовая функциональность Первичного ключа, он также находится в SQL Server и MySQL, Clustered Index ускоряет поиск.
Механизм базы данных автоматически создает уникальный индекс для обеспечения уникальности ограничения PRIMARY KEY. Если кластерный индекс еще не существует в таблице, или некластеризованный индекс явно не указан, создается уникальный кластеризованный индекс для принудительного ограничения PRIMARY KEY.
Прочитайте это: http://www.sqlskills.com/blogs/kimberly/the-clustered-index-debate-continues/
Что такое 'Clustered index'? Или почему этот вопрос помечен как «Oracle»? – ibre5041
@Ivan Это концепция Microsoft SQL, Oracle не имеет кластеризованных индексов. Таким образом, вопрос неоднозначен: OP хочет знать, почему индекс создается при добавлении PK? или почему создается «кластеризованный» индекс, который не существует? –