0

我有一个 mysql 数据库,在其中保存项目信息并保存描述。

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

列是这样的:

id   name   category   publisher   mail   price   description

提前致谢。

4

2 回答 2

1

将您的字符数据存储为varchar()而不是存储,char()并阅读有关这些数据类型的 MySQL 文档(此处)。这仅将字符实际存储在描述中,加上更多字节的开销。

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

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

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

而且,200 字节的记录并不是很大。您应该首先担心让您的应用程序正常工作,然后再让其满足性能目标。在此过程中,做出合理的选择,例如使用适当大小的数字varchar()代替char()(您可能会考虑使用定点数字类型而不是浮点数来表示货币值)。

于 2013-04-20T18:18:16.363 回答
0

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

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

文档列出了数据类型,并提供了有关它们使用多少空间以及如何管理它们的信息。

于 2013-04-20T16:35:57.333 回答