我今天上午搜索了一個自己問自己的問題,但是找不到任何有關它的信息或文章。關於MySQL的理論情況
我想知道,在下列情況下,爲了提高性能(有點%仍然):
語境:我有兩個列:ID
,AddedAt
(AddedAt
是當行的Unix時間戳創建)。
理論上,如果插入新行,ID
將爲+1,而AddedAt
將爲當前時間。
現在,假設在當前情況下不可能同時插入兩個,那麼使用AddedAt
作爲PK
並刪除ID
列會更好嗎? AddedAt
將只是一個並且是PK
和UNIX Timestamp
的唯一列。所以在決賽中,我會有一列而不是兩列。
我看到的唯一不好的一面可能是將在AddedAt
上創建的密鑰的大小,因爲unix時間戳現在是10位數字。
在這種情況下會更好嗎?你怎麼看 ?
編輯:怎麼樣使用時間戳+毫秒?
如果系統使用64位整數,y2038k問題不再是一個了,對吧? – 2012-07-31 14:29:56
不,因爲無論底層操作系統如何,mysql時間戳字段都是4個字節。操作系統中的time_t可能是64位,但mysql是4字節,並且保留4個字節。 – 2012-07-31 14:30:47
正如我上面所說的,int是4個字節,int大小是8.時間戳是4個字節,不管底層操作系統的位能力如何。 – 2012-07-31 14:39:34