Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Первичный ключ по нескольким полям  [new]
kiloolik
Member

Откуда: Новосибирск
Сообщений: 81
Всем привет.

Есть вот такой вопрос: есть таблица с количеством строк около 3 млрд строк. На ней первичный ключ - 6 полей (int, smallint и тому подобное). На таблице есть пара некластерезованных индекса.

Вот возникли вопросы:
1) правильно ли делать такой первичный ключ с точки зрения производительности запросов?
2) Играет ли роль такой первичный на размер некластеризованных индексов?

3) Если учесть (1) и (2) имеет ли смысл переделать эту таблицу с заменой такого первичного ключа на поле bigint либо guid?
24 июн 13, 16:19    [14475172]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37061
1. С точки зрения производительности сферических запросов в вакууме?
2. Влияет.
3. См. первый пункт.
24 июн 13, 16:26    [14475232]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
kiloolik
Всем привет.

Есть вот такой вопрос: есть таблица с количеством строк около 3 млрд строк. На ней первичный ключ - 6 полей (int, smallint и тому подобное). На таблице есть пара некластерезованных индекса.

Вот возникли вопросы:
1) правильно ли делать такой первичный ключ с точки зрения производительности запросов?
2) Играет ли роль такой первичный на размер некластеризованных индексов?

3) Если учесть (1) и (2) имеет ли смысл переделать эту таблицу с заменой такого первичного ключа на поле bigint либо guid?


Ответ-вопрос:
1. Все зависит от того, какие конкретно запросы: выборка, обновления/вставка/удаление. Что чаще, что критичнее. Какие поля используются для выборки по условию.
2. А он у вас кластерный?
3. Чтобы хоть как-то ответить на ваш вопрос, желательно увидеть скрипты создания таблицы, ограничений и индексов на оной.
24 июн 13, 16:27    [14475248]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
kiloolik,

Первичный ключ - не обязательно должен быть кластерным.
1) смотря каких запросов
2) играет роль размера ключа кластерного, если он же и первичный, то да
3) т.е. на некий сурогатный ключ? много раз обсуждалось тут на форуме, например. И вообще тысячи их, есть что почитать.
Касательно выбора кандидатов для кластерного ключа: вот есть статейка (перевод).
Однако, есть и прямо противоположные рекомендации от некоторого уважаемого специалиста, которые актуальны при очень высокой интенсивности вставки данных - лично тестов не проводил, но склонен им верить. Так что на общий вопрос, общий ответ - it depends... И, т.к. ситуаций много, проще всего выбрать некий бэйзлайн и проверить в тестовой среде что и как повлияет в вашей ситуации.
24 июн 13, 16:36    [14475329]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
kiloolik
Member

Откуда: Новосибирск
Сообщений: 81
Сергей Викт.
Ответ-вопрос:
1. Все зависит от того, какие конкретно запросы: выборка, обновления/вставка/удаление.

В основном выборка. Обновления/вставка/удаление происходит ночью

Сергей Викт.
Что чаще, что критичнее. Какие поля используются для выборки по условию.

Критичное выборка. Но не думаю что все поля ключа используются в выборке. В основном пара полей я думаю.
24 июн 13, 16:39    [14475354]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
kiloolik
Но не думаю что все поля ключа используются в выборке. В основном пара полей я думаю.
Подозрительное какое-то утверждение
24 июн 13, 16:41    [14475367]     Ответить | Цитировать Сообщить модератору
 Re: Первичный ключ по нескольким полям  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
kiloolik
Сергей Викт.
Ответ-вопрос:
1. Все зависит от того, какие конкретно запросы: выборка, обновления/вставка/удаление.

В основном выборка. Обновления/вставка/удаление происходит ночью

Сергей Викт.
Что чаще, что критичнее. Какие поля используются для выборки по условию.

Критичное выборка. Но не думаю что все поля ключа используются в выборке. В основном пара полей я думаю.

Что вы имеете ввиду, говоря: "используются в выборке"?
Вывод их в списке полей, либо условие по ним?
Чуть выше вам коллега дал отличную ссылку. Советую почитать.
24 июн 13, 16:42    [14475374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить