0
我想在postgresql
表中表示0-23
中的數字,並對它們進行索引。如何在postgresql中表示小數字?
這種類型的數據的最佳數據類型是什麼?
postgres=smallint
java=short
或者我能做得更好嗎? postgres中還有一個TINYINT
數據類型,但是如何在java中表示例如「23」呢?
我想在postgresql
表中表示0-23
中的數字,並對它們進行索引。如何在postgresql中表示小數字?
這種類型的數據的最佳數據類型是什麼?
postgres=smallint
java=short
或者我能做得更好嗎? postgres中還有一個TINYINT
數據類型,但是如何在java中表示例如「23」呢?
您可以使用PostgreSQL中"char"
類型(注意雙引號,它們是重要的),這將只佔用一個字節,在Java中使用byte
:
CREATE TABLE chartest (
id integer primary key,
c "char");
INSERT INTO chartest (id, c) VALUES (1, 42::"char");
你必須投的表達integer
當你查詢的值,這樣就可以使用getByte(int)
方法:
java.sql.Statement st = conn.createStatement();
java.sql.ResultSet rs = st.executeQuery("SELECT c::integer FROM chartest WHERE id = 1");
rs.next();
System.out.println(rs.getByte(1));
注:屬性總是對準根據typalign
屬性的數據類型。
例如,如果在上面的示例的列c
之後立即添加一個類型爲integer
的新列,則會有三個字節在這些列之間浪費併爲空。
所以如果你想節省空間,你必須小心物理佈局。
您可能以這種方式在數據庫上節省了一些空間,但我不知道是否值得付出努力。如果我是你,我會試着去看看它是否值得。
Java對於-128到127之間的數字具有「字節」。但除此之外,爲什麼要麻煩?你在嚴重的內存限制下運行嗎? – Thomas
是的,我正在運行大量的內存,大約500萬行。 – membersound
如果您有5億行,那麼24值的常規索引不太可能有幫助。您可能會看到聚集索引的一些增益,但會降低插入速度。 –