MySQL存储长字符串的最佳方式

时间:2013-03-14 10:09:10

标签: mysql

我正在寻找关于从mySQL专家那里存储长串数据的最佳方法的一些建议。

我有一个通用表,用于存储任何类型的数据,我的意思是它应该能够保存字母数字和数字数据。 目前,表结构很简单,ID和实际数据存储在单个列中,如下所示:

id INT(11)
data VARCHAR(128)

我现在需要存储更大量的数据(最多500个字符),并且想知道最好的方法是简单地增加varchar列大小,或者是否应该添加新列(TEXT类型)列?)我需要存储更长的字符串。

如果有任何专家有任何建议我都听见了! 我首选的方法是简单地增加varchar列,但这是因为我很懒。 我正在运行的mySQL版本是5.0.77。

我应该提到新的500字符要求只适用于奇数记录;表中的大多数记录不会超过50个字符。 我认为通过制作专栏128可以防范未来。显示我知道多少!

3 个答案:

答案 0 :(得分:19)

一般来说,这不是一个具有“正确”答案的问题。 MySQL中没有“无限长度”文本存储类型。您可以使用LONGTEXT,但仍然有(荒谬的高)上限。然而,如果你这样做,你就会因为不得不处理50个字符文本的那个荒谬的blob而踢你的DBMS。更不用说你几乎不做任何事情。

因此,大多数futureproofness(TM)可能由LONGTEXT提供。但这也是解决问题的一种非常糟糕的方法。老实说,我会重新审视应用程序的要求。存储没有“域”(如在应用程序中定义明确)和任意长度的字符串不是RDBMS的优势之一。

如果我想在“应用程序设计”级别解决这个问题,我会使用NoSQL键值存储(而且我会像他们那样反NoSQL炒作,所以你知道它很严重尽管我认识到这种微小变化是一个相当昂贵的变化。但是,如果这表明您的DBMS最终会持有什么,那么现在切换以避免同样的问题可能会更加谨慎。数据域在RDBMS中非常重要,而在非关系解决方案中显然是边缘化的,这似乎是您在此尝试解决的问题。

坚持使用MySQL?只需将其增加到VARCHAR(1000)即可。如果您对数据没有要求,那么无论如何都与您无关。

答案 1 :(得分:1)

我们可以使用varchar(<maximum_limit>)。我们可以通过的最大限制是 65535 字节。

注意:VARCHAR 的最大长度在除 TEXT/BLOB 列和使用的字符集之外的所有列之间共享。

答案 2 :(得分:0)

使用文本时请小心。 TEXT数据未存储在数据库服务器的内存中,因此,每当您查询TEXT数据时,MySQL都必须从磁盘上读取它,与CHAR和VARCHAR相比,它要慢得多,因为它无法利用索引。存储长字符串将是nosql数据库