Когда я создаю первичный ключ в таблице оракула, почему он создает по умолчанию «кластерный» индекс. В чем причина этого автоматического создания кластерного индекса для создания первичного ключа? это просто предпочтение дизайнера 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/
- 1. Первичный ключ и кластерный индекс
- 2. первичный ключ и кластерный индекс
- 3. Композитный первичный ключ/кластерный индекс, фрагментация, производительность
- 4. Первичный ключ GUID, отдельный кластерный индексный столбец
- 5. SQL - первичный ключ, кластерный указатель, автоинкремент
- 6. базы данных: первичный ключ, кластерный или NONCLUSTERED
- 7. Создает ли SQL Server Non-кластерный индекс по умолчанию
- 8. Автоматически сгенерированный первичный ключ
- 9. Кластерный против покрытия индекс
- 10. Почему кластерный индекс Azure SQL настолько велик?
- 11. Первый кластерный первичный ключевой код. Первый код
- 12. Hibernate автоматически создает индекс?
- 13. Автоматически индексирует первичный ключ действительно хорошо?
- 14. Видимо массивный первичный ключ индекс
- 15. Почему первичный ключ дубликат
- 16. JPA первичный ключ автоматически генерировать
- 17. кластерный индекс колонкового магазина медленный
- 18. Какой индекс лучше не кластерный и кластерный в этом случае?
- 19. Является ли первичный ключ автоматически индексом?
- 20. Путаница: Почему SSMS создает кластерный индекс по умолчанию для первичного ключа с единицей
- 21. ManyToMany Relation не создает первичный ключ
- 22. Где разместить первичный ключ
- 23. SQL Server: измените кластерный первичный индекс на некластеризованный
- 24. Создать первичный ключ mysql без кластерного индекса?
- 25. Непрерывность каскада не создает первичный ключ для нового объекта, почему?
- 26. Почему первичный ключ быстрее индекса?
- 27. Кластерный индекс в SQL Server
- 28. Первичный ключ всегда индексируется в sql-сервере?
- 29. DB Designer создает составной первичный ключ
- 30. Имейте не кластерный индекс, но не кластерный индекс
Что такое 'Clustered index'? Или почему этот вопрос помечен как «Oracle»? – ibre5041
@Ivan Это концепция Microsoft SQL, Oracle не имеет кластеризованных индексов. Таким образом, вопрос неоднозначен: OP хочет знать, почему индекс создается при добавлении PK? или почему создается «кластеризованный» индекс, который не существует? –