gpt4 book ai didi

mysql - 我可以使两列彼此唯一吗?

转载 作者:行者123 更新时间:2023-11-29 04:02:40 26 4
gpt4 key购买 nike

抱歉,我只是在玩弄 mysql 并边学边做。这是我的问题。我有一个带有数值的表(在 python 中)(例如 {3:1,3:2,3:3})。我想将数据库用作此变量的持久性存储(因为它们不能完全适合内存),但我想尝试使其尽可能快。

目前我只在 mysql 中使用一列(索引),字典中的每个条目都有自己的行。我想看看如果我使用两列 INT 而不是 CHAR 列,是否可以加快读取/写入速度,但我需要这两列彼此唯一。在上面的示例中,所有数据都是唯一的,如果我添加另一个 3=1,那么它只会覆盖现有值,但 3=4 会创建一个新条目。我如何在 mysql 中复制它?

另外,我关于加速的逻辑是否有意义,或者选择两列实际上最终会比选择一个更昂贵吗?

我正在从头开始构建它,因此您不必在我现有的解决方案中工作,我非常灵活地采用任何可行的方法。

谢谢!

最佳答案

简短的版本是你可以在一个唯一索引中有多个列

// Create the test table
CREATE TABLE testTable (
col1 INT UNSIGNED NOT NULL,
col2 INT UNSIGNED NOT NULL,
col3 VARCHAR NOT NULL,
PRIMARY KEY (col1,col2)
);

这会将名称为 uniqueOnCol1AndCol2 的列添加到表 testTable 中。然后,您可以按如下方式使用 INSERT 查询

INSERT INTO testTable (
col1,
col2,
col3
) VALUES (
3,
1,
'Original value'
) ON DUPLICATE KEY UPDATE
col1 = VALUES(col1)

这会将 (3,1,'Original value') 插入到 testTable 中。跟进

INSERT INTO testTable (
col1,
col2,
col3
) VALUES (
3,
1,
'New value'
) ON DUPLICATE KEY UPDATE
col1 = VALUES(col1)

然后将覆盖 col3 并使其成为“新值”

关于mysql - 我可以使两列彼此唯一吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9367624/

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