MySQL:存储罕见的长字符串

问题描述 投票:0回答:1

有一个MySQL表:

CREATE TABLE `variables` (
    `name` VARCHAR(50) NOT NULL,
    `value` VARCHAR(250) NOT NULL,
    PRIMARY KEY (`name`)
) ENGINE=InnoDB CHARSET=utf8mb4;

SELECT 只有一种:按键选择一行。

value
通常很短(大多数情况下少于 10 个字符)。 但在新的条件下,这种情况非常罕见(<1%) it can be long (about 10 Kb). How should I change the table?

据我了解,在这种情况下,

VARCHAR(15000)
TEXT
更有效。 但这个解决方案怎么样?

CREATE TABLE `variables` (
    `name` VARCHAR(50) NOT NULL,
    `value` VARCHAR(250) NULL,
    `long_value` TEXT NULL,
    PRIMARY KEY (`name`)
) ENGINE=InnoDB CHARSET=utf8mb4;

如果值很短,则将其保存到

value
。 长值保存到
long_value

SELECT value,long_value FROM variables WHERE name=?
之后检查哪一列不为NULL。 或者只是
SELECT IFNULL(value, long_value) AS value WHERE variables WHERE name=?

mysql
1个回答
0
投票

使用 VARCHAR(15000) 作为数据。 DB 中占用的空间是实际数据长度 + 几个字节的开销。这对于短字符串和长字符串都适用。

将数据分成两个字段只会增加应用程序的复杂性,并且实际上浪费空间。

© www.soinside.com 2019 - 2024. All rights reserved.