проектирование базы данных с просьбой о совете - PullRequest
0 голосов
/ 02 июня 2009

Мне нужно хранить записи схемы как (ID: int, описание: varchar, updatetime: DateTime). Идентификатор - это уникальный первичный ключ. Сценарий использования: я буду часто вставлять новые записи, часто запрашивать записи по идентификатору и реже удалять просроченные записи (по полю времени обновления, используя другое задание SQL, запускаемое ежедневно, чтобы избежать увеличения базы данных). Каждая запись имеет размер 0,5 КБ.

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

Кстати: я использую SQL Server 2005/2008.

спасибо заранее, George

Ответы [ 4 ]

3 голосов
/ 02 июня 2009

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

2 голосов
/ 02 июня 2009

Ваше решение хранить все в одной таблице необходимо пересмотреть. Есть очень немного предметов, которые действительно могут быть смоделированы только одной таблицей.

Проблемы, возникающие при использовании только одной таблицы, обычно менее очевидны, чем проблемы, возникающие из-за неправильного создания индексов и тому подобного.

Меня интересует столбец "описание" (поле). Все ли описания описывают одно и то же? Вы когда-нибудь получаете наборы описаний, а не только одно описание за раз? Как вы группируете описания в наборы?

Откуда вы знаете идентификатор для описания, которое вы пытаетесь получить? Храните ли вы копии удостоверения личности в каком-то другом месте, чтобы ссылаться на то, какие вы хотите?

Вы знаете, что такое "внешний ключ"? Был ли ваш выбор не включать какие-либо внешние ключи в эту таблицу преднамеренно?

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

1 голос
/ 02 июня 2009

Звучит так просто, как только возможно, за исключением добавления индекса времени обновления, как предложено OMax (я рекомендую).

Если вы также хотите получить элементы по описанию, вам также следует рассмотреть текстовый индекс или полнотекстовый индекс для этого столбца.

Кроме этого - вы готовы пойти:)

1 голос
/ 02 июня 2009

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

Это звучит для меня как-то странно. Я не говорю, что это ошибка. что у вас есть ВСЕ информация в одной таблице. Переосмыслите этот момент. Посмотрим, сможешь ли ты что-то реорганизовать.

...