数据库设计征求意见

时间:2009-06-02 08:21:30

标签: sql-server database-design optimization

我需要存储模式的条目,如(ID:int,description:varchar,updatetime:DateTime)。 ID是唯一的主键。使用场景是,我将经常插入新条目,经常按ID查询条目,并且不经常删除过期条目(通过updatetime字段,每天运行另一个SQL作业以避免数据库不断增加)。每个条目的大小为0.5k。

我的问题是如何在我的场景中优化数据库架构设计(例如添加索引,事务/锁定级别或其他选项的技巧)以提高性能?目前我计划将所有信息存储在一个表中,不确定它是否是最佳选择。

BTW:我正在使用SQL Server 2005/2008。

提前谢谢, 乔治

4 个答案:

答案 0 :(得分:3)

除主键外,只需在updatetime上添加索引。

答案 1 :(得分:2)

您需要审核将所有内容存储在一个表中的决定。很少有主题可以通过一个表格很好地建模。

使用一个表所产生的问题通常不会因为没有创建正确的索引和类似的事情而引起的问题。

我对“描述”栏(字段)感兴趣。所有描述都描述了同样的事情吗?您是否曾检索过多组描述,而不是一次只检索一个描述?如何将描述分组?

您如何知道您要检索的说明的ID?您是否将ID的副本存储在某个地方,以便参考您想要的?

你知道什么是“外键”吗?您是否选择不在此表中包含任何外键?

在您了解单个表格设计是否真的适合您的情况之前,需要回答一些问题。

答案 2 :(得分:1)

您的ID是您的主键,它自动拥有索引。 您可以为过期日期添加索引。索引 将帮助您搜索,但会降低性能 插入,删除和更新时。无论如何,一个指数不是 一个问题。

听起来对我来说有些奇怪 - 我不是说这是一个错误 - 你有一个表中的所有信息。重新思考这一点。 看看你是否可以重构一些东西。

答案 3 :(得分:1)

听起来很简单,除了可能像OMax建议的那样在updatetime上添加一个索引(我推荐)。

如果您还想按说明提取项目,还应该考虑该列的文本索引或全文索引。

除此之外 - 你准备好了:)