2009-04-01 6 views
4

私はJavaアプリケーションでデータベースエンティティを作成しており、IntegerまたはLongを "id"フィールドのクラスタイプとして使用することを合理化しようとしています。私はORMとしてHibernateを使用しています。このORMは、このフィールドをHSQLDBデータベースの列にマップします。HSQLDB内部:HibernateとInteger vs Long ID

ロングは明らかに大きく、より多くのエントリを処理しますが、非常に低いレベルでは、過去(32ビットシステム)では32ビット幅であることがわかりました。 IE:長い読書は2つのパスを取るだろう...正しい考えですか?

私が今日ロングを使用している場合、私のIntegrityを使用した場合よりも私のHSQLDBクエリが遅く実行されますか?

IE:HSQLDBは​​何とか複数の読み込みパスを使用する必要がありますか...より大きな内部構造を使用するか... 2つの整数サイズの列を追加するか、明らかに非理想的なものがありますか?それとも、何とか今日の64ビット処理の問題点です.1つの読み込みでLongを処理する必要があります(Longは64ビットです)。

+0

あなたの質問は素晴らしいですが、一度それがCornifiedされたらさらに良いです。 –

答えて

3

ロングを使用してください。メモリ内のデータベースであっても、パフォーマンスへの影響はアプリケーションの他の部分に比べて重要ではない可能性が非常に高いです。しかし、識別子が不足すると後でアプリケーションを変更するのは信じられない面倒です。

+0

パフォーマンスに関する証拠は?あなたは本当に分からないようです。そして、データベースのサイズにどのような影響がありますか?私はHSQLDBについてはわかりませんが、MySQLではHibernateが整数の代わりにLong IDをBIGINTにし、BIGINTはここで議論されるようにサイズとスピードの点でコストがかかります:http://planet.mysql.com/entry/?id = 13825 –

関連する問題