我必须在表格中保存三种文档类型。文档类型的数量是固定的,不会更改。有超过100万条记录,未来可能超过1亿条。为此,性能在我的程序中非常重要。我不知道哪种方式可以提高数据库性能。基于行还是基于列?
基于行:
CREATE TABLE [Person].[Document]
(
[Id] [uniqueidentifier] NOT NULL,
[PersonId] [uniqueidentifier] NOT NULL,
[Document] [varbinary](max) NULL,
[DocType] [int] NOT NULL,
)
基于列的:
CREATE TABLE [Person].[Document]
(
[Id] [uniqueidentifier] NOT NULL,
[PersonId] [uniqueidentifier] NOT NULL,
[Document_Page1] [varbinary](max) NULL,
[Document_Page2] [varbinary](max) NULL,
[Document_Page3] [varbinary](max) NULL,
)
答案 0 :(得分:2)
规范化(或称为基于行的)解决方案更灵活 它允许您在不更改数据库结构的情况下更改为每个人保存的文档数量,通常是首选解决方案 一百万行是SQL服务器的一个小表 我看过有5000万行的数据库表,表现非常好 这是一个正确索引的问题。
我建议如果你想要更好的性能,请使用主键的int标识列而不是uniqueidentifier,因为它的重量非常轻,数据库索引更容易,因为它不是随机命令开始。
我会选择正常化的解决方案。