Ключи / индексы для ревизий пользовательского текста - PullRequest
0 голосов
/ 05 июля 2010

У меня есть таблица:

id:int
revision:int
text:ntext

В общем, мне нужно будет извлечь последнюю редакцию текста для определенного идентификатора или (значительно реже) добавить новую строку, содержащую новую редакцию для конкретного идентификатора. Учитывая это, было бы неплохо поместить индексы в столбцы id и revision. У меня нет проблем с реализацией этого, но мне интересно, если это ситуация, когда было бы разумно использовать составной (многопольный) индекс / ключ, состоящий из id и revision, или есть ли какая-либо другая стратегия, подходящая для моего варианта использования?

Ответы [ 3 ]

1 голос
/ 05 июля 2010

Если id является первичным ключом, он уже проиндексирован (я не использую SqlServer), мне кажется, что ваша ревизия также уникальна.поэтому я думаю, что было бы лучше использовать отдельные индексы и устанавливать уникальные ограничения на ревизию (если требуется).

1 голос
/ 05 июля 2010

Я не думаю, что разница в производительности между составным индексом и двумя отдельными индексами будет заметна, но, как обычно, я предлагаю попробовать оба варианта и профилирование, если требуется абсолютная наилучшая производительность.

ВыСкорее всего, всегда будет запрашивать в обоих полях, с определенным id и иногда неизвестным revision (когда нужно найти максимум revision для id).Если ваш составной индекс (id,revision), то этот вариант использования поддерживается индексом.Запросы только на id без заботы о revision также работают.

Если есть вероятность, что вы будете запрашивать только на revision без учета id, тогда вам потребуются два отдельных индекса.

Вы также захотите проанализировать влияние каждого индекса на производительность insert.Составной индекс будет кластеризоваться по обоим полям, тогда как два отдельных индекса будут кластеризоваться только по id.

РЕДАКТИРОВАТЬ: опечатки.

1 голос
/ 05 июля 2010

Похоже, что в большинстве случаев вы выбираете запись на основе идентификатора и ревизии - поэтому для самых быстрых поисков вы должны сделать идентификатор и ревизию составного первичного ключа.

...