Java HSQLDB内部:Hibernate和Integer与长ID

Java HSQLDB内部:Hibernate和Integer与长ID,java,hibernate,orm,hsqldb,Java,Hibernate,Orm,Hsqldb,我正在Java应用程序中创建数据库实体,并尝试在使用整数或Long作为“id”字段的类类型之间进行合理化。我使用Hibernate作为ORM,ORM将把这个字段映射到HSQLDB数据库中的一列 我的难题是:Long显然更大,将处理更多的条目-但是,在非常低的级别上,我知道在过去(32位系统)操作系统级别的读取将是32位宽。IE:长时间阅读需要两遍。。。这是正确的想法吗 如果我今天使用Long,我的HSQLDB查询会比使用整数时运行得慢吗 IE:HSQLDB是否必须以某种方式使用多个读取过程。。。

我正在Java应用程序中创建数据库实体,并尝试在使用整数或Long作为“id”字段的类类型之间进行合理化。我使用Hibernate作为ORM,ORM将把这个字段映射到HSQLDB数据库中的一列

我的难题是:Long显然更大,将处理更多的条目-但是,在非常低的级别上,我知道在过去(32位系统)操作系统级别的读取将是32位宽。IE:长时间阅读需要两遍。。。这是正确的想法吗

如果我今天使用Long,我的HSQLDB查询会比使用整数时运行得慢吗


IE:HSQLDB是否必须以某种方式使用多个读取过程。。。或者使用更大的内部结构。。。或者有太多附加两个整数大小的列。。。或者其他明显不理想的东西?或者,它在今天的64位处理中是一个莫名其妙的问题——它应该处理一次读取中的长数据(长数据为64位)?

使用长数据。即使使用内存中的数据库,相对于应用程序的其余部分,性能影响也不大。但是,如果标识符开始用完,那么稍后返回并更改应用程序将是一件令人难以置信的麻烦事。

您的问题很好,但一旦它被证明是正确的,就更好了。关于性能,您的证据是什么?看来你不是很确定。那么对数据库大小的影响呢?我不确定HSQLDB是否正确,但在MySQL中,Hibernate将长ID转换为BIGINT而不是integer,而BIGINT在大小和速度方面都有成本,如下所述: