1

我最近在摆弄位串数据类型。并对:

  1. ...加上 5 或 8 个字节的开销,具体取决于此文档页面底部的字符串长度

  2. 它是如何通过驱动程序(Npgsql、ODBC 等)在其他语言(PHP、Java、C#、C++ 等)中处理的

对于 #1,似乎使用 integer(smallint/bigint) 将大大提高存储效率,或者甚至可能提高性能,因为到处都支持整数。用整数执行位运算在编程语言中很少有任何问题。那么引入数据类型有什么意义呢?仅适用于需要大量位掩码的情况?位字段索引可能吗?我对 Pg 中的位字段索引是如何完成的更好奇。

对于#2,我很困惑,不仅仅是好奇。比如说,一个简单的例子,如果我将工作日位掩码存储在 bit(7) 字段中,一天一个位,最低为星期一。然后我查询 PHP 和 C++ 中的值。我会得到什么?通过文件,它说我会有一些字符串。但是位串不是我可以直接使用的东西——就像整数一样。那么在这种情况下,我应该放弃位域吗?

谁能详细说明为什么/何时应该使用位或位变化?

[编辑]---------------- 我在这里找到了一个相关的帖子

但是,我的头脑还没有清醒。正如在上面的帖子(及其评论)中所说,我清楚地了解 bit(n) 和 bit varying 的用途。但我想知道他们在编程语言中的地位如何。说,据我所知,这两种数据类型在 PHP 中表示为字符串。这是我所期望的最少的。

谁能给出一个最好使用这种列的场景?

4

1 回答 1

1

看看Igorw 的博客。本文介绍 PHP 中笨拙的二进制字符串机制。我也在寻找一种在 PHP for Pomm 中表示 bitvar postgres 数据类型的好方法,但我没有绝对的答案。

于 2012-10-08T13:04:42.363 回答