gpt4 book ai didi

sql - 什么时候索引在一个小的引用表上是合理的?

转载 作者:行者123 更新时间:2023-12-04 10:49:59 25 4
gpt4 key购买 nike

在我的模式中,我有很多这样的小引用表

CREATE TABLE category 
(
category VARCHAR PRIMARY KEY
);

其中将包含 20-250 行。

我知道使用 INDEX 意味着 INSERT 性能会受到轻微影响,以及额外的磁盘空间使用。显然我根本不在乎这些,因为我的引用表很小而且很少改变。

我只关心主表上的高频 INSERT 的性能,其中有许多列引用了这些无数的小表。

假设我在主表中插入一行;为了强制执行给定的 REFERENCE 约束,Postgres 是否需要对引用的表执行某种 SELECT 以检查值是否存在?

如果是这样,那么即使表非常小,考虑到我预计主表中插入的频率足够高,几乎每个小表上的索引都合理吗?

还是我叫错了树? (没有双关语意)

最佳答案

显式索引是合理的,但不是必需的。引用列应声明为主键。这将自动创建一个索引。为什么需要主键?参照完整性。您希望确保引用此类表的表具有正确的值。

我建议您使用 2 字节或 4 字节的数字作为主键。这减少了引用引用表的其他表中的开销。此外,当键是固定长度而不是可变长度时,索引的效率稍高一些。

所以,我会建议这样的事情:

CREATE TABLE category (
categoryId smallint generated always as identity primary key
category VARCHAR unique
);

关于sql - 什么时候索引在一个小的引用表上是合理的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59535258/

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