当前位置:  开发笔记 > 数据库 > 正文

PostgreSQL表中的列顺序是否重要?

如何解决《PostgreSQL表中的列顺序是否重要?》经验,为你挑选了1个好方法。

例如,我有表用户(id,用户名,电子邮件).

以下查询之间有什么区别吗?(也许是表演,或其他任何事情)

SELECT id, username, email FROM users

SELECT id, email, username FROM users

通常,列顺序是否影响创建PostgreSQL表?



1> Mike Sherril..:

在PostgreSQL中创建表时,列的顺序无关紧要,但在PostgreSQL中创建索引时,它确实很重要.

PostgreSQL使用底层唯一索引实现主键.如果主键包含多个列,则PostgreSQL按照您声明的顺序创建具有列的基础索引.针对部分主键的一些查询将能够使用索引; 有些人不会.

该引用来自多列索引的文档.

多列B树索引可以与涉及索引列的任何子集的查询条件一起使用,但是当前导(最左侧)列存在约束时,索引最有效.确切的规则是对前导列的等式约束以及第一列上没有等式约束的任何不等式约束将用于限制扫描的索引部分.在索引中检查对这些列右侧的列的约束,因此它们可以保存对表的正确访问,但它们不会减少必须扫描的索引部分.例如,给定(a,b,c)上的索引和查询条件WHERE a = 5 AND b> = 42 AND c <77,必须从第一个条目扫描索引,其中a = 5且b = 42,直到最后一个条目,a = 5.将跳过c> = 77的索引条目,但仍然需要扫描它们.这个索引原则上可以用于对b和/或c有约束但没有约束的查询 - 但是必须扫描整个索引,所以在大多数情况下,规划器更喜欢使用索引进行顺序表扫描.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有