mysql列数据类型对维护效率很重要吗?

时间:2010-11-22 16:12:57

标签: mysql performance schema types varchar

我是否需要仔细选择我的mysql数据库列的数据类型,或者我可以将内容设置为varchar(99999)而没有大小限制而不会损害效率吗?

谢谢:)

5 个答案:

答案 0 :(得分:3)

选择代表您正在存储的数据的数据类型。如果要存储数字,请使用专为存储数字而设计的数据类型。如果要存储日期,请使用专为存储日期而设计的数据类型。

如果您的所有数据都是文本,请为长度可能不同的列选择VARCHAR,并为长度永不变化的列选择CHAR,或者尾随空格不重要的列。 VARCHAR需要一个额外的字节来存储字段的长度,并且由于长度是可变的而带来非常小的性能损失,这在提取或存储数据时会产生更多的步骤。

请注意,如果您将VARCHAR列用作索引的一部分,则可能需要对其进行大小限制,因为MySQL上的索引的最大大小为1000字节。因此,如果将所有列设置为VARCHAR(100),则只能在三个这样的字段周围创建复合索引。

(作为旁注,MySQL中不存在类型VARCHAR(99999) - VARCHAR字段的最大长度为255,因为只有一个字节用于存储记录中每个VARCHAR的长度。)

答案 1 :(得分:3)

我发现在设计新表时最好准确声明列类型。例如,它有助于确保只有一个数字输入到一个只应具有数字的列中,就像价格一样。如果它试图使用一个美元金额,你的代码会做什么,并检索'Asd $%* @)',因为用户可以输入任何自由格式字符串?

通过准确地声明列类型,您可以确保检索的数据与请求的类型相同,而无需进行任何繁琐的文本解析和错误检查。

答案 2 :(得分:2)

取决于你想做什么。为了排序目的,你会希望整数存储为整数,我会说:) 对于小型数据库,尽管你可能不会因为使一切变成varchar而受到太大影响。

答案 3 :(得分:2)

您还可以使用select * from your_table procedure analyse(2, 5)(根据您的方便调整数字)来了解MySQL如何看待您的表格。

答案 4 :(得分:2)

毫无疑问,对于非平凡的数据库,数据类型非常很重要。

对于mysql功能(例如时间,字符串或聚合函数),选择正确的数据类型很重要。

对于架构功能(例如加入),选择正确的数据类型非常重要。

为了提高性能,每个字段的每个字节都会计数。

所有长变数的数据库都会令人遗憾。

DBA的存在是有原因的。 :)