哪一個數據庫鍵的字符串更長或更長?如果差值是微秒,則與我們的應用無關。該表有數千個記錄/行。如果Long更快,如何將字符串轉換爲Long,是否有一些Java API,以便唯一的字符串可以轉換爲唯一的long?數據庫主鍵
數據庫主鍵
回答
哪一個更快的將數據庫關鍵字設置爲String或Long?
這很可能是一個long比String更快。首先,處理器可以處理「自然」長的類型值,而字符串必須通過軟件操作。此外,字符串可能會佔用更多的內存而不是長的值,這意味着緩存處於更大的壓力之下,更多的數據必須從/加載/保存到磁盤。
如果差值是微秒,則與我們的應用無關。該表有數千個記錄/行。
所以它取決於操作。如果你
如果長更快,如何將一個字符串轉換爲長,是否有一些Java API,以便唯一的字符串可以轉換爲唯一的長?
您可以使用它的hash code從字符串派生int。這個你從這個方法中得到的整數將在允許的範圍內很好地分佈,但不能保證是唯一的。一般來說,不可能從一個字符串中派生一個唯一的int,因爲嚴格來說,字符串比long長。
想象一下,您可以構建一個巨型表格,其中包含所有長整型值的十進制表示形式。現在有一個微不足道的長< - >兩者之間的字符串映射。但是這張表仍然不包含字符串「hello world」,並且沒有更多的剩餘空間可以用來表示這個字符串。
一般來說,我的建議是:如果您的源數據是天生 string類型,請使用它並讓數據庫執行優化。擁有「成千上萬」條目的表對於任何當前數據庫都不會成爲問題。也許你可以通過創建聰明的索引來提高性能。
一般來說,構建,維護和掃描索引VARCHAR
(String
)的速度應該低於BIGINT
(Long
)索引。
要查看所不同的是爲您的使用情況下,重要的是,我建議你創建的預期大小的兩個表,並針對它們運行預期的操作(SELECT
,INSERT
,UPDATE
,DELETE
),並測量結果...
通常情況下,這種說法,你可以工作委託給你的數據庫:
ALTER TABLE my_table
MODIFY key_column BIGINT NOT NULL;
數據庫不使用Java類型,可以翻譯使用SQL類型/映射到Java。
您應該使用自然適合您的應用的類型,因爲正確性通常比速度更重要。
long
,Long
和String
之間的區別是亞微秒在Java中,如果這對你很重要,你不應該使用一個數據庫做查詢,但在內存中緩存中的所有數據,並使用像TLongObjectHashMap集合
沒有明智的方法來回答這個問題。主鍵是數據庫的邏輯功能,而性能取決於物理實現以及您想要對其執行的操作。你也許會問:「紅車比藍車快嗎?」
對於不同的數據類型,兩種不同的鍵約束在功能上並不等同。所以即使有必要的上下文,它也是一個很奇怪的可能不是很有用的比較。
- 1. 數據庫主鍵
- 2. PHPAdmin數據庫負主鍵
- 3. 數據庫主鍵的數據類型
- 4. Mysql數據庫...主鍵和外鍵
- 5. 數據庫規範化:外鍵=主鍵?
- 6. 數據庫解決重複主鍵
- 7. 訪問數據庫兩個主鍵
- 8. 獲取主鍵從數據庫
- 9. 主鍵和數據庫規範化
- 10. H2數據庫主鍵違規
- 11. Haskell持久數據庫主鍵
- 12. H2數據庫主鍵上創建
- 13. 從數據庫檢索主鍵
- 14. SQL Server數據庫鏡像和主鍵
- 15. 數據庫:表開頭的主鍵列
- 16. 數據庫主鍵和驗證
- 17. VS數據庫項目主鍵名
- 18. 跨表的通用數據庫主鍵
- 19. Linq更新數據庫,主鍵
- 20. 從數據庫獲取主鍵(Python/Django)
- 21. 從數據庫中刪除主鍵
- 22. 6數據庫中的主鍵
- 23. Mysql數據庫 - 主鍵問題
- 24. 數據庫 - 字符串作爲主鍵?
- 25. 插入數據庫後顯示主鍵
- 26. 沒有主鍵的數據庫表
- 27. 更改SQL數據庫上的主鍵
- 28. 改變表主鍵 - 木箱數據庫
- 29. 沒有主鍵的數據庫表
- 30. oracle數據庫的主鍵格式
這是關於什麼數據庫?德比? – 2011-06-15 07:48:42
Long值有限,可能的字符串數量有限,因此您要查找的字符串 - >長整型轉換無法完成。 – Buhb 2011-06-15 07:55:29
@Buhb,我想'String'列只包含存儲爲'String'的數值...... – 2011-06-15 07:58:47