У меня есть таблица, которая материализует SQL, она имеет 6 миллионов записей, которые используются только для операций SELECT.
Я создаю PK с полем, которое является номером строки, создание этого PK занимает большечем 5 минут в некоторых случаях. Создание индекса для этого поля, отличного от PK, занимает менее 30 секунд.
Когда я создаю PK, создание других дополнительных индексов (не связанных с полем PK) занимает примерно 1/3 времени, когда я надеваюне создавать PK (но создать индекс для поля PK).
Почему эта разница во времени?
Creating table (inserts): 262 sec
Creating index A (without PK constraint): 9 sec
Creating index C: 32 sec
Creating index D: 42 sec
Creating index E: 20 sec
Creating index F: 59 sec
Creating index G: 26 sec
Creating index H: 24 sec
Creating index I: 23 sec
Creating index J: 22 sec
Creating table (inserts): 135 sec
Creating index A (with PK constraint): 556 sec
Creating index C: 21 sec
Creating index D: 11 sec
Creating index E: 12 sec
Creating index F: 22 sec
Creating index G: 11 sec
Creating index H: 11 sec
Creating index I: 11 sec
Creating index J: 10 sec
Дополнительные индексы из одного поля: текста или даты.
Анализируя эти сценарии, кажется, что лучше создать PK (даже не используя его в SQL), потому что, если вы создадите больше индексов, будет быстрее, хотя создание PK будет намного медленнее, но я не понимаю, почему.