MySQL字段类型的重要性

时间:2009-12-23 23:00:11

标签: mysql

在MySQL表中,我有几列 - 一些包含字符串,一些日期或数字。我一直只是制作每个字段varchar(200)。创建更合适的字段类型有什么好处?选择查询会变得更快吗?

6 个答案:

答案 0 :(得分:5)

使用数据类型意味着您将能够以有意义的方式实际使用数据。例如,您可以进行日期算术(例如,使用DATE_ADD)。

这也意味着按数字排序将按预期工作(不会使用字符串)。

它还允许mysql为您所代表的数据选择适当的存储量/类型。

有很多原因,尤其是它使得使用您的架构的其他人更容易知道期望的值类型。它还允许mysql对您的数据进行验证(如果您的“日期”列包含“一次在蓝色的月亮中”会发生什么?)

答案 1 :(得分:2)

简短回答:是的,他们很可能会更快。

如果你有很多行,你将节省大量的磁盘空间。例如,INT使用的空间比VARCHAR(200)少。此外,选择相关列类型将为您提供type safety的某种度量(取决于您的代码或数据库将为您做多少个类型转换)。

答案 2 :(得分:1)

使用数字字段中的索引时速度为10x-100x

答案 3 :(得分:0)

我是否理解正确,您在varchar(200)列中存储了数字和日期?

嗯,你不能比较日期,用数字等计算。

考虑如下查询:

SELECT    yourfieldlist
FROM      YourTable
WHERE     DateColumn > '2009-10-01'

如果DateColumn是varchar(200),则无法按预期工作。因此,对列使用适当的类型非常重要。

如果您只使用这一种数据类型,为什么还要使用数据库呢?只需将数据填入文本文件即可。

答案 4 :(得分:0)

该类型告诉DBMS如何与该字段进行比较。例如,这允许您查找date_created>的行。容易“约会”。

简而言之,是的,如果您使用正确的类型并且正在与这些字段进行比较,您的选择会更快,因为MySQL将知道如何更好地索引数据以更有效地返回结果。如果您只是在没有任何联接的情况下进行基本选择,在哪里或者订购那么您可能不会看到速度提升。

答案 5 :(得分:0)

另一个好处是数据类型可确保提供的数据的正确性。通常,无论如何--- MySQL并没有高度重视其正确性。例如,"laksjfd"不是有效日期。也不是"2009-02-29" ---但是"2012-02-29"。但这些都是有效的varchar(200)