假设我有一张很大的桌子,上面有很多车主,比如:
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/