【发布时间】:2018-04-15 15:56:21
【问题描述】:
我正在测试删除主键列 id 的迁移(我想使用外键作为主键)。当我运行并恢复迁移时,我看到我的表的状态是相同的,除了 id 列现在是最后一个。
它会以任何方式改变我的数据库的行为吗?我是否应该费心恢复迁移还原代码中的列顺序?
【问题讨论】:
-
列的相对位置应该对性能基本没有影响。由于字段对齐,可能会有一些小问题。
-
@GordonLinoff 这看起来像是一个答案。另外,您能否澄清一下这些次要考虑因素是什么?
-
。 .我对 Postgres 的页面布局不是很熟悉。我不知道它是否根据字段的对齐来优化列排序(例如,消除间隙)。我希望对具体的了解更多的人来回答。
-
数据库的行为不会改变,但是一些使用该数据库的设计不佳的应用程序可能会崩溃 - 这些应用程序使用
SELECT *检索数据而不是显式声明列列表SELECT col1, col2, ...和这些使用INSERT INTO TABLE VALUES (1,2,3,...)而不是明确声明字段名称INSERT INTO (col1, col2 ...) VALUES (1,2,3,...)。列的“默认”顺序将更改,应用程序将失败。无论如何,这不是你的数据库的问题,而是应用程序设计者的问题。
标签: sql postgresql primary-key