我必须设计一个数据库来存储日志数据,但我之前没有经验。我的表包含大约19列(每行大约500个字节),每天增长到30.000个新行。我的应用必须能够再次有效地查询此表。
我正在使用SQL Server 2005。
我该如何设计这个数据库?
编辑:我想要存储的数据包含很多类型:datetime,string,short和int。 NULL单元总数约为25%:)
答案 0 :(得分:1)
然而,你会进行查找,日志表几乎肯定会有一个时间戳列。您需要首先在该时间戳上进行集群以保持插入效率。这也可能意味着始终将查询限制在特定的日期范围内,以便对聚簇索引的选择性很好。
您还需要最常查询的字段的索引,但不要在这里跳枪。您可以稍后添加索引。首先个人资料,以便了解您真正需要哪些索引。在包含大量插入的表上,不需要的索引会损害您的性能。
答案 1 :(得分:0)
嗯,鉴于您提供的描述,您所能做的就是确保您的数据正常化,并且您的19列不会引导您进入“稀疏”表(这意味着很多列都是空)。
如果您想添加更多数据(可能是您现有的架构和一些示例数据),那么我可以提供更具体的建议。
答案 2 :(得分:0)
在您要查询的每个列上抛出一个索引。
大量的测试数据和执行计划(使用查询分析器)都是您的朋友。
答案 3 :(得分:0)
除了对稀疏表的注释外,您还应该在要查询的列上对表进行索引。
或者,您可以使用分析器对其进行测试,并根据实际使用情况查看分析器在索引方面的建议。
答案 4 :(得分:0)
您可以进行一些优化:
如果您能够发布表格定义,我可能会提供更多建议。