我正在设计一个需要优化以获得最大速度的数据库。
所有的数据库数据都是从我称之为输入数据库的东西中生成的(它包含我正在编辑的数据,主要是谷歌地图的一些折线、标记等)。
所以数据库不需要编辑,但它需要尽可能多地保存数据,以便快速向用户显示结果(穿过城镇的路线、自定义折线等)。
问题是:选择较小的数据类型,例如 smallint 而不是 int 会提高性能还是会影响性能?空间不是问题,经过一些快速计算,数据库不会超过 200mb,不会有超过 100.000 行的表(平均在 5.000 左右)。
我问这个是因为我在互联网上阅读了一些文章,有些人说较小的数据类型可以提高性能,另一些人说它会影响它,因为必须进行额外的处理。我知道,对于较小的数据库,结果可能并不明显,但我对每一点都很感兴趣,因为我期待许多请求会触发更多查询。
托管环境将是带有 SQL Server 2008 R2 的 Windows Server 2008 R2。
编辑 1:只是给你一个例子,因为我还没有合适的表格结构:我将有一张桌子,可以容纳公共交通线路(大约 200 条),由现实生活中的唯一数字标识,并且将在各种表中引用它,并且将在其上进行各种操作。这些引用表将保存最大量的数据。
因为线条有唯一的编号,所以我想到了 3 个设计示例:
PK 是数据类型的行号:smallint
PK 是数据类型的行号:int
PK 有所不同(例如身份),行号存储在不同的字段中。
只是为了争论,因为我在不进行优化的“输入数据库”上使用了它,所以 PK 是一个 GUID(16 字节);如果你愿意,你可以比较一下这与其他人相比有多糟糕,如果真的是
所以请记住,PK 将在至少 15 个表中被引用,其中一些将有超过 50.000 行(其余的平均为 5.000,如上所述),这些行将受到不断的查询和操作,我我对我能得到的每一点速度都很感兴趣。
如果您需要,我可以更详细地说明这一点。谢谢
编辑2:我想到了另一个与此相关的问题,认为它适合这个讨论:
如果我从我的 .NET 应用程序内部使用本机 SQL 查询而不是使用 LINQ to SQL,我会在这个特定场景中看到任何性能改进吗?我知道 LINQ 进行了高度优化,并且在性能方面产生了非常好的查询,但仍然值得一问。再次感谢。