我最近不得不向我们的数据库团队提出一组新的 Postgres 表,这些表将被我正在编写的应用程序使用。他们失败了设计,因为我的表有这样列出的字段:
my_table
my_table_id : PRIMARY KEY, AUTO INCREMENT INT
some_other_table_id, FOREIGN KEY INT
some_text : CHARACTER VARYING(100)
some_flag : BOOLEAN
他们说该表不会是最优的,因为some_text
出现在 之前some_flag
,并且由于CHARACTER VARYING
字段搜索比BOOLEAN
s 慢,因此在进行表扫描时,具有列从最高精度到最低精度排序的表结构会更快;所以,像这样:
my_table
my_table_id : PRIMARY KEY, AUTO INCREMENT INT
some_other_table_id, FOREIGN KEY INT
some_flag : BOOLEAN
some_text : CHARACTER VARYING(100)
这些 DBA 具有 Sybase 背景,最近才转为我们的 Postgres DBA。我在想这可能是一个不适用于 Postgres 的 Sybase 优化(我认为 Postgres 足够聪明以至于不关心列序列)。
无论哪种方式,我都找不到任何确认或否认的 Postgres 文档。寻找任何久经沙场的 Postgres DBA 来权衡这是否是有效的或虚假的(或有条件的有效!)声明。