Есть ли причина, по которой столбец первичного ключа никогда не будет использоваться?

У меня есть процедура, которая будет создавать отдельные таблицы (Sql Server 2008) для хранения результатов отчетов, созданных моим приложением (Asp.net 3.5). Для каждого отчета потребуется отдельная таблица, поскольку столбцы в таблице будут различаться в зависимости от настроек отчета. Таблица будет содержать от 10 до 5000 строк, редко более 10 000.

Применяются следующие правила использования:

  • После сохранения данные никогда не будут обновляться.
  • При доступе к результатам для таблицы все данные будут извлечены.
  • Никакой другой таблице не потребуется выполнять соединение с этой таблицей.

Зная это, есть ли причина для создания столбца индекса PK в таблице? Будет ли это каким-либо образом способствовать быстродействию извлечения данных, и если да, перевесит ли это дополнительную нагрузку на обновление индекса при вставке данных (я знаю, что 10 КБ записей - это относительно небольшой объем, но это решение должно иметь возможность масштабирования).

Обновление : Вот некоторые дополнительные сведения о обрабатываемые данные, которые входят в текущее проектное решение одной таблицы для каждого отчета:

  • Таблицы будут записывать набор числовых значений (устанавливаемых во время выполнения на основе настроек отчета), которые соответствуют другому набору ссылочных значений varchar ( также устанавливается во время выполнения на основе настроек отчета).
  • Всякий раз, когда данные извлекаются, потребуется некоторая пост-обработка на сервере, прежде чем вывод может быть отображен пользователю (таким образом, я всегда буду извлекать все значения).

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

Единственное, что я могу придумать, - это иметь столбец ID (идентифицирующий ReportVersionID, соответствующий другой таблице), столбец ReferenceValues ​​(поле varchar, содержащее все ссылочные значения в указанном порядке, разделенные некоторым разделителем) и Столбец NumericValues ​​(такой же, как ReferenceValues, но для чисел), а затем, когда я получаю результаты, помещаю все в специализированные объекты в системе, разделяя значения на основе определенного разделителя). Кажется ли это предпочтительным?

5
задан A-K 18 October 2010 в 14:06
поделиться