gpt4 book ai didi

SQLite - 外键比 int 列更有效吗?

转载 作者:行者123 更新时间:2023-12-02 07:40:26 27 4
gpt4 key购买 nike

我有一张 table :

  CREATE TABLE pupils (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name TEXT, surname TEXT, address TEXT, score INTEGER
);

其中score是百分比。

在其中包含整数值还是像这样的表的外键更有效?

  CREATE TABLE score (percentage INTEGER PRIMARY KEY NOT NULL);

显然该表将填充 0-100。

我的想法是,如果你有 1000 名学生,将其保留为整数列意味着查询速度更快,但使用的空间更多,而使用外键意味着使用的空间更少,但查询速度更慢。

不确定这是否正确?

所以我想我会把它扔在那里!

最佳答案

如果您使用外键来保护 pupils 表中的 score 值,您仍然需要在 学生。如果两个表中都没有列,则无法建立 FOREIGN KEY 关系。

FOREIGN KEY 的唯一优点是它可以让您将 score 列中允许的值限制为 1 到 100 之间的整数。但是,可以使用 CHECK 完成相同的操作对列进行约束,无需额外的表。

如果您使用 FOREIGN KEY,您的 DDL 将如下所示:

CREATE TABLE pupils (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
name TEXT, surname TEXT, address TEXT, score INTEGER REFERENCES score(percentage)
);

请注意,分数列仍然存在。

在这种情况下,FOREIGN KEY 方法添加了整个表和必须维护的两个索引。使用一张表和一个 CHECK 约束的效率要高得多。

关于SQLite - 外键比 int 列更有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255206/

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