2010-04-12 65 views

回答

6

根据数据类型,是的,这确实让区别。

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

现在,如果它是int而不是varchar,那么会有一点下降,因为整数值比字符串值的排序要快得多。

如果它是一种可比较的类型,并且您对空间不太感兴趣,那么选择一个更简单,更强大的空间。

3

理论上,是的,tinyint比int更快。但良好的数据库设计和适当的索引对性能有更重大的影响,所以我总是使用int来简化设计。

2

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

3

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

1

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

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

1

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

当然使用正确类型的数据也可以帮助数据完整性;您不能存储日期时间字段中不存在的日期,但可以在varchar字段中存储日期。如果你使用float而不是int,那么你的值并不局限于整数值等等。对于浮点数,如果你打算做数学计算,因为它不是一个确切的类型,所以通常使用不好。

相关问题