对于数据库,选择正确的数据类型会影响性能吗?

时间:2010-04-12 15:11:27

标签: sql mysql database database-design

如果是这样,为什么?我的意思是,搜索的速度比int更快吗?

如果是这样,性能上的实际差异是什么?

7 个答案:

答案 0 :(得分:7)

根据数据类型,是的,它确实有所作为。

inttinyint相比,速度不会有显着差异,但会对数据大小产生影响。假设tinyint为1字节,而int为4,则每行保存3个字节。它会在一段时间后累积起来。

现在,如果它是intvarchar,那么就会有一点下降,因为像整数值这样的排序会比字符串值快得多。

如果它是一个类似的类型,并且你没有太大的空间压力,那么选择一个更容易,更强大的那个。

答案 1 :(得分:3)

理论上,是的,tinyint比int快。但是良好的数据库设计和正确的索引对性能的影响要大得多,因此我总是使用int来简化设计。

答案 2 :(得分:3)

我敢说,在这种情况下,没有实际的性能差异。存储空间是更重要的因素,但即便如此,它也没有多大区别。差异可能是2个字节?在500,000行之后,你几乎使用了额外的兆字节。如果你正在使用那么多数据,希望你不要捏meg兆字节。

答案 3 :(得分:2)

选择正确的数据类型可以提高性能。在很多情况下,实际差异可能不是很多,但糟糕的选择肯定会产生影响。想象一下,当您只存储一些包含几个字符的字符串时,使用1000个字符的char字段而不是varchar字段。这是一个极端的例子,但你肯定会使用varchar更好。你可能永远不会注意到int和tinyint之间的性能差异。您的整体数据库设计(规范化表格,良好指数等)将产生更大的影响。

答案 4 :(得分:1)

当然,选择正确的数据类型总是有助于加快执行速度

看看这篇文章,这肯定会帮助你: http://www.peachpit.com/articles/article.aspx?p=30885&seqNum=7

答案 5 :(得分:1)

性能考虑因素取决于您的型号和用途的规模。虽然现代对存储空间的考虑几乎不是问题,但您可能需要考虑性能:

数据库引擎倾向于将数据存储在称为页面的块中。 Sql Server默认有8k页面,Oracle 2k和MySql 16k页面大小?对于这些系统中的任何一个都没那么大。无论何时对一些数据(字段和行)执行操作,其整个页面都将从db中获取并放入内存中。当您的数据较小(小int与int)时,您可以将更多单独的行和数据项放入页面中,因此您不得不获取更多页面的可能性会下降,整体性能会提高。所以是的,使用尽可能小的数据表示肯定会对性能产生影响,因为它允许数据库引擎更高效。

答案 6 :(得分:1)

它可以影响性能的一种方法是不要求您将其转换为正确的类型来操纵数据。当有人使用varchar作为实例而不是datetime数据类型然后必须将它们转换为日期数学时,就会出现这种情况。它还可以通过提供较小的记录(这就是为什么不应该以最大大小定义所有内容)来影响性能,这会影响在数据库中存储和检索页面的方式。

当然使用正确类型的数据也可以帮助数据完整性;您不能存储日期时间字段中不存在的日期,但可以存储在varchar字段中。如果你使用float而不是int,那么你的值不会被限制为整数值等。说到浮点数,如果你想要进行数学计算而通常不好用,因为它不是精确类型。