字段长度对查询时间的影响

时间:2013-04-20 15:54:07

标签: mysql sql

我有一个mysql数据库,我保存项目的信息,我也保留说明。

问题是描述栏最多可以容纳150个字符,我觉得很长,我想知道它是否会减慢查询时间。另外我想知道它是否建议缩短int的大小我的意思是如果我的价格通常不那么大我应该将列限制为小/中int?

列是这样的:

id   name   category   publisher   mail   price   description

提前致谢。

2 个答案:

答案 0 :(得分:1)

将您的角色数据存储为varchar()而不是char(),并阅读有关这些数据类型(here)的MySQL文档。这只会在描述中存储实际的字符,再加上几个字节的开销。

至于较长的字段是否意味着表现较差的查询。这是一个复杂的主题。显然,在极端情况下,拥有最大大小的记录会减慢速度,而不是10字节的记录。原因与I / O性能有关。 MySQL读入页面,页面可以包含一个或多个记录。然后处理页面上的记录。

页面上适合的记录越多,I / O就越少。

但随后它变得更加复杂,具体取决于硬件和存储引擎。如今,磁盘像操作系统一样进行预读。因此,下一次读取页面(如果页面没有碎片并且彼此相邻)可能比读取初始页面快得多。实际上,在第一页上的处理完成之前,您可能在内存中有下一页。那时,每页​​上有多少条记录并不重要。

并且,记录的200字节不是很大。您首先应该担心让您的应用程序正常运行,然后再考虑让它达到性能目标。在此过程中,做出合理的选择,例如使用varchar()而不是char()和适当大小的数字(您可能会考虑固定点数字类型而不是浮动货币值)。

答案 1 :(得分:0)

只有你考虑150长 - 数据库很可能没有,因为它们旨在一次处理更多。 不要因为“性能”而牺牲您的数据。如果您的应用程序的性质要求您同时存储多达150个字符的文本,请不要害怕这样做,但要查找优化提示。

但是,使用正确的数据类型可以帮助您节省空间。例如,如果您有一个用于存储0到20值的字段,则不需要INT字段类型。 TINYINT会做。

documentation列出数据类型,并提供有关他们使用多少空间以及如何管理这些数据的信息。