У меня есть процедура, которая будет создавать отдельные таблицы (Sql Server 2008) для хранения результатов отчетов, созданных моим приложением (Asp.net 3.5). Для каждого отчета потребуется отдельная таблица, поскольку столбцы в таблице будут различаться в зависимости от настроек отчета. Таблица будет содержать от 10 до 5000 строк, редко более 10 000.
Применяются следующие правила использования:
Зная это, есть ли причина для создания столбца индекса PK в таблице? Будет ли это каким-либо образом способствовать быстродействию извлечения данных, и если да, перевесит ли это дополнительную нагрузку на обновление индекса при вставке данных (я знаю, что 10 КБ записей - это относительно небольшой объем, но это решение должно иметь возможность масштабирования).
Обновление : Вот некоторые дополнительные сведения о обрабатываемые данные, которые входят в текущее проектное решение одной таблицы для каждого отчета:
Я также с подозрением относился бы к утверждениям, что им приходилось создавать новую таблицу при каждом запуске отчета. Тем не мение, учитывая, что разные столбцы (как по номеру, так и по имени и типу данных) могут потребоваться для каждого запуска отчета, я не вижу отличной альтернативы.
Единственное, что я могу придумать, - это иметь столбец ID (идентифицирующий ReportVersionID, соответствующий другой таблице), столбец ReferenceValues (поле varchar, содержащее все ссылочные значения в указанном порядке, разделенные некоторым разделителем) и Столбец NumericValues (такой же, как ReferenceValues, но для чисел), а затем, когда я получаю результаты, помещаю все в специализированные объекты в системе, разделяя значения на основе определенного разделителя). Кажется ли это предпочтительным?