如果是这样,为什么呢?我的意思是,tinyint比int更快搜索吗?
如果是这样,性能上有哪些实际差异?
如果是这样,为什么呢?我的意思是,tinyint比int更快搜索吗?
如果是这样,性能上有哪些实际差异?
int
和tinyint
在速度上没有明显区别,但数据大小却有所不同。假设tinyint
是1字节,而int
则是4字节,每行可以节省3字节,随着时间的推移,这些节省的空间将累积起来。int
与varchar
进行比较,那么会有一些下降,因为对于整数值,排序等操作要比字符串值快得多。我认为在这种情况下没有实际的性能差异。存储空间是更重要的因素,但即使如此,差别也不大。差别可能只有2个字节?在500,000行之后,你几乎使用了额外的1兆字节。希望你不会因为处理这么多数据而担心一兆字节的空间。
当然,选择正确的数据类型总是有助于更快的执行。
看一下这篇文章,它肯定会帮助你: http://www.peachpit.com/articles/article.aspx?p=30885&seqNum=7
性能考虑完全取决于您的模型规模和使用情况。虽然在现代时代存储空间的考虑几乎不是问题,但您可能需要考虑性能:
数据库引擎倾向于将数据存储在称为页面的块中。 Sql Server具有8k页面,Oracle具有2k页面大小,MySql默认为16k页面大小?对于这些系统中的任何一个来说都不算太大。每当您对一小部分数据(字段和行)执行操作时,其整个页面都会从数据库中获取并放入内存中。当您的数据较小时(tiny int vs. int),则可以将更多的单个行和数据项放入页面中,因此您需要获取更多页面的可能性降低,整体性能加快。因此,是的,使用数据的最小可能表示肯定会对性能产生影响,因为它使数据库引擎更加高效。
它会影响性能的一种方式是不需要将数据转换为正确的类型来操作数据。例如,当有人使用varchar而不是datetime数据类型时,就必须进行转换才能进行日期计算。此外,定义所有内容的最大大小会导致记录变小,从而影响数据库中页面的存储和检索。
当然,使用正确类型的数据也可以帮助数据完整性;在datetime字段中无法存储不存在的日期,但在varchar字段中可以。如果您使用float而不是int,则您的值不受整数值的限制等。而且,说到float,如果您打算进行数学计算,则通常不建议使用它,因为它不是精确类型,会产生舍入误差。