我正在看一些PostgreSQL表的创建,我偶然发现:

CREATE TABLE (
...
) WITH ( OIDS = FALSE );

我阅读了postgres提供的文档,我从OOP中了解了对象标识符的概念,但我仍然没有掌握,

  • 为什么这样的标识符在数据库中有用?
  • 缩短查询时间?
  • 什么时候使用?

推荐答案

OID基本上为包含在系统列(与用户空间列相反)中的每一行提供一个内置id.对于没有主键、有重复行等的表来说,这很方便.例如,如果有一个表有两个相同的行,并且要删除其中最早的一行,可以使用oid列.

OID是使用4字节无符号整数实现的.它们是not唯一的–OID计数器将以2²-1环绕.OID还用于识别数据类型(参见/usr/include/postgresql/server/catalog/pg_type_d.h).

根据我的经验,大多数postgres支持的应用程序通常都没有使用该功能(可能部分是因为它们是非标准的),their use is essentially deprecated:

在PostgreSQL 8.1中,带有_OID的默认_为

在用户表中使用OID是非常重要的

Sql相关问答推荐

更新在两个或多个面中具有交点的面

在多个联合中使用相同的SELECT SQL查询

SQL Select 最小优先级

如何计算一个用户S的日常连胜?

正在编写查询.我需要将订阅的时间段分为第一个订阅中包含的另一个订阅之前和之后的时间段

将所有XML文件导入到SQL Server中

在UNION查询中查找MIN

最小非重复集的SQL查询

用于SQL协助的XQUERY()

Proc SQL Select Distinct SAS

每个分组最多 Select 最后 2 个值并并排显示它们

MySQL中的递归查询邻接表深度优先?

如何根据 Google BigQuery 中的特定列值连接一列的 N 行?

如何在TSQL中编写此窗口查询

将表格和字符串连接以 for each 记录生成订单项目

更新表 A,然后将新值插入表 B(包含更新内容的历史日志(log))

将 MERGE 语句与 Oracle PL/SQL 表类型一起使用时,导致无效数据类型错误的原因是什么?

将有效数字作为 varchar 返回的 SQL 函数

我现在如何显示重复的汽车? postgresql

如何根据时间在 MongoDB Compass 中分组?