gpt4 book ai didi

php - mysql varchar 和 text 疑问,重新加载;)

转载 作者:行者123 更新时间:2023-11-29 21:38:25 25 4
gpt4 key购买 nike

我对mysql有疑问。我可以轻松地将字段限制为某些字符,例如姓氏,以及其他字段,例如包含特定事件的迷你日志,我认为该事件不再是 2 页(或更少的字符)。我知道这是一个相当常见的问题,我看到了很多关于这个问题的链接,但我看不出有什么区别和正确的方法。

以下是我的结论和疑问,如有错误请指正:

-varchar 是一个变量类型,如果我设置 varchar(10) 或 varchar(65535),没关系,尽管不是相同的 65536,它通过到中等文本。-varchar 与一个或多个参数是相同的,只占用必要的空间,它只是保存的限制和表示的限制。
-如果我在应用程序一侧进行限制,它是完全相同的并且更灵活
-text是固定长度的,如果我设置text的话,无论我使用还是不使用,它都会占用65535。

varchar
- 它有一个重载,必须首先找到字段的长度是多少。
- 在节省长度的情况下,它的成本多了一个字节。
- 它是内联保存,这意味着在表中。
-它始终具有更好的性能。

文字
-它存储在表之外,有一个指向我的文本的指针,是这样吗?
- 它有固定数量的字符。

-在 varchar 和 text 中设置的长度是以字符为单位,而不是以字节为单位(以前的版本不同)

结论:

-出于这些原因,始终使用 varchar 会更好,只有一种情况是不正确的,即我确切知道字符数的情况。
所有其他最常见的情况,最好使用最长的 varchar,因此它适用于名称或姓氏(虽然我可以将其限制为 text(35),但我不知道名称是否是“Tom”或“Federico Guillermo Rodrigo Cayetano”),对于现场问题或描述(更多变量),或者对于像迷你日志这样更大的文本,其长度可以从 0 到 3 页字符不等(这就是我的情况) ,但我们可以把它发挥到极致,比如 0 到 16 页文本,大约 65535 个字符)。这是正确的,特别是如果我们无法知道 future 的需求,比如最长的描述,如果我们限制表空间,需求的改变可能是一个难题。

最后,就像一个奖励:),如果文本超过 65535 个字符但谁可以改变会发生什么?将其设置为中等文本或长文本(如果可以改变)是合理的吗?

最佳答案

我认为你的假设并不完全正确,可能过于偏执或被不再有效的历史担忧所玷污。

通常最好使用 VARCHAR,因为 MySQL 和其他数据库引擎已经过优化,可以很好地处理它们。从历史上看(1990 年代),使用具有固定长度行的表与使用可变长度行的表时存在显着的性能差异,但如今已不再需要担心。

同样,TEXT 列过去将所有数据存储在主表数据的外部。现在我相信使用了一种混合方法,前 N 个字符存储在行中,剩余的字符存储在 BLOB 系统中(如有必要)。根据定义它是可变长度的,单个字符不使用65535字节来存储。

对于更大的文本 block ,您需要使用 LONGTEXT,但此时您应该评估是否正确使用数据库。在其中存储、检索和操作巨大的物体可能会带来严重的麻烦。

默认情况下,我会使用 VARCHAR(255) 表示任何“文本”,并在必要时将其延长。除了非常有限的情况外,缩短通常会出现问题,例如您存储的 ISO 国家/地区代码根据定义为两个字符。

假设名称“不超过 32 个字符”几乎总是一个错误的假设。除非您有充分的理由不这样做,否则请将这些内容保持开放。

您可能认为城市或地名之类的东西也很短,但是 you'd be wrong 。世界是一个奇怪的地方。期待意想不到的事情。

关于php - mysql varchar 和 text 疑问,重新加载;),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34731046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com