我应该为 mysql db 选择什么数据类型来存储包含特殊字符的段落文本?
What datatype should i choose for mysql db to store a paragraph text which includes special characters as well?
在我的 MySql 数据库中,我想存储一些至少 1000 字的文本,其中包含一些特殊字符,例如 "",'()<>-.!;
数据将使用 php.
传递
VARCHAR 列是 variable-length 字符串。长度可以指定为 0 到 65,535 之间的值。 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,由表中的所有列共享)和使用的字符集。 VARCHAR 更易于使用。
TEXT 数据类型最多可容纳 64KB。
不要忘记在 TEXT 字段数据中转义 ' 字符(如 \')。
您可以使用 BLOB 数据类型来存储您的文本。它最多可以处理 64KB 的数据,即大约 64000 个字符。
有几种数据类型可以保存文本。当您声明它们中的任何一个时,您还可以指定它们的排序规则和字符集。例如:
CREATE OR REPLACE TABLE mytable {
mytext VARCHAR(2000) COLLATE utf8mb4_general_ci
)
这使您可以存储最多 2000 个字符的 Unicode 文本。每个 Unicode 字符可以占用 1 到 4 个字节的存储空间。如您所知,Unicode 可以处理许多不同的人类脚本,更不用说表情符号和数学符号了。
要存储您拥有的文本
CHAR()
数据类型,前提是您预先确切知道必须存储多少个字符。
VARCHAR()
数据类型。它具有最佳性能,特别是如果你想对其进行过滤。
- so-called LOB (large object) data types:
LONGTEXT
...您的文本最多 4GiB。这就是 WordPress 用于内容的内容,它的价值。
MEDIUMTEXT
... 高达 16MiB
TEXT
... 高达 64KiB
TINYTEXT
...最多255字节(没用,用VARCHAR(255)
代替)
就使用的磁盘 space 而言,这些都有合理的开销。
如果要在 VARCHAR()
列上放置索引,请将其大小限制为 VARCHAR(768)
。
专业提示:除非绝对需要,否则请避免使用 LOB 数据类型。当您在 SELECT 或 WHERE 子句中使用它们时,它们会使服务器做额外的工作。请改用 VARCHAR()
。
Mediumtext 已知存在与插入 mediumtext 字段相关的错误,因此我建议您远离它,因为一个段落不足以保证它。
在我的 MySql 数据库中,我想存储一些至少 1000 字的文本,其中包含一些特殊字符,例如 "",'()<>-.!;
数据将使用 php.
VARCHAR 列是 variable-length 字符串。长度可以指定为 0 到 65,535 之间的值。 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,由表中的所有列共享)和使用的字符集。 VARCHAR 更易于使用。
TEXT 数据类型最多可容纳 64KB。 不要忘记在 TEXT 字段数据中转义 ' 字符(如 \')。
您可以使用 BLOB 数据类型来存储您的文本。它最多可以处理 64KB 的数据,即大约 64000 个字符。
有几种数据类型可以保存文本。当您声明它们中的任何一个时,您还可以指定它们的排序规则和字符集。例如:
CREATE OR REPLACE TABLE mytable {
mytext VARCHAR(2000) COLLATE utf8mb4_general_ci
)
这使您可以存储最多 2000 个字符的 Unicode 文本。每个 Unicode 字符可以占用 1 到 4 个字节的存储空间。如您所知,Unicode 可以处理许多不同的人类脚本,更不用说表情符号和数学符号了。
要存储您拥有的文本
CHAR()
数据类型,前提是您预先确切知道必须存储多少个字符。VARCHAR()
数据类型。它具有最佳性能,特别是如果你想对其进行过滤。- so-called LOB (large object) data types:
LONGTEXT
...您的文本最多 4GiB。这就是 WordPress 用于内容的内容,它的价值。MEDIUMTEXT
... 高达 16MiBTEXT
... 高达 64KiBTINYTEXT
...最多255字节(没用,用VARCHAR(255)
代替)
就使用的磁盘 space 而言,这些都有合理的开销。
如果要在 VARCHAR()
列上放置索引,请将其大小限制为 VARCHAR(768)
。
专业提示:除非绝对需要,否则请避免使用 LOB 数据类型。当您在 SELECT 或 WHERE 子句中使用它们时,它们会使服务器做额外的工作。请改用 VARCHAR()
。
Mediumtext 已知存在与插入 mediumtext 字段相关的错误,因此我建议您远离它,因为一个段落不足以保证它。