gpt4 book ai didi

mysql - 哪个数据库设计更快 : a unique index and INSERT IGNORE, 或使用 SELECT 查找现有记录?

转载 作者:行者123 更新时间:2023-11-29 01:15:23 31 4
gpt4 key购买 nike

我有一个只有一列的表:userid。

当用户访问某个页面时,他的用户标识被插入到表中。用户 ID 是唯一的,因此该表中不应有两个相同的用户 ID。

我正在考虑两种设计:

  1. 使列唯一并在用户每次访问该页面时使用 INSERT 命令。
  2. 通过从表中SELECTing 检查用户是否已经记录在表中,如果没有找到记录则INSERTing。

哪个更快?

最佳答案

一定要创建一个 UNIQUE 索引,或者,更好的是,使该列成为 PRIMARY KEY

无论如何,您都需要一个索引来加快检查速度。

为什么不让这个索引UNIQUE 以便您有另一个后备选项(如果您出于某种原因忘记检查SELECT)?

如果您的表是 InnoDB,它无论如何都会有一个 PRIMARY KEY,因为所有 InnoDB 表都是按设计索引组织的。

如果您没有在表中声明PRIMARY KEYInnoDB 将创建一个隐藏 列作为主键,从而使您的表两倍大,并且您的列上不会有索引。

在您的列上创建PRIMARY KEY 是双赢的。

你可以发布

INSERT
IGNORE
INTO mytable
VALUES (userid)

并检查有多少条记录受到影响。

如果 0,则存在 key 冲突,但没有异常(exception)。

关于mysql - 哪个数据库设计更快 : a unique index and INSERT IGNORE, 或使用 SELECT 查找现有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1328074/

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