假设我有一张很大的桌子,上面有很多车主,比如:

OWNERSHIP
owner    | car
---------------
steven   | audi
bernahrd | vw
dieter   | vw
eike     | vw
robert   | audi
... one hundred million rows ...

如果我将其重构为:
OWNERSHIP
owner    | car <-foreign key TYPE.car_type
---------------
steven   | audi
bernahrd | vw
dieter   | vw
eike     | vw
robert   | audi
...


TYPE
car_type      |
---------------
audi
vw

我是否需要在spacewise或speedwise中赢得任何东西,或者我需要为此在car_type上创建一个整数代理键?

最佳答案

使用两个表和字符串外键当然要比使用一个表占用更多的空间。还要多少取决于你有多少种车。
您应该使用integercar_id
如果有相当比例的车名会重复,使用整数键可以节省空间。
如果您需要索引car列,则需要更多,因为整数索引比字符串索引小得多。
比较整数也比比较字符串快,所以用car搜索也应该更快。
较小的表意味着如果它适合缓存,那么访问它的速度也应该更快。

关于postgresql - 如果我想节省空间,是否必须创建代理 key ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14834059/

10-10 04:24