2013-07-07 13 views
1

我目前正在開發一個Web應用程序,其中前端和應用程序邏輯完全基於Javascript,並且我僅將PHP用於後端(MySQL)的事務。作爲ID會影響我的數據庫性能的大字符串,而不是自動遞增數字?

由於我在JavaScript中創建複雜和相互關聯的對象,這將後來被翻譯成多個數據庫記錄,我需要對他們(Id)的唯一標識是在Javascript中產生。我無法克服這一點,併發送請求到數據庫,以便要求表中的下一個唯一鍵並提交它,原因如我所說,創建對象相當複雜,我將不得不有多個嵌套的AJAX請求。

無論如何,如果我改變了一些表的主鍵從INT到VARCHAR(32)也將在性能產生影響?

注意鍵的形式爲: timestamp-zeroes_userid-zeroes_incremetedid ex。 (1373222220000000001000000014)

謝謝!

+0

除了@戈登的回答,請確保您創建這些字符串ID字段的索引。這也將有助於表現。 – xanadont

+0

正如我對@Gordon所說的,我會嘗試找到一種方法來跳過Javascript生成的id,並通過多個AJAX請求使用MySQL的自動遞增ID。不管怎麼說,還是要謝謝你! –

回答

2

是的。按鍵的大小增加了索引和用於存儲數據的頁面的大小。這導致每個數據頁面的記錄更少,讀取數據更多的數據到內存中。

對於一個表中的一個關鍵,從4到32個字節增加可能不會對性能產生重大影響。但是,如果每個外鍵引用的額外開銷爲28字節,並且數據庫中甚至有數十個外鍵引用,那麼較大的數據大小將開始阻礙性能。

在這種情況下,你應該存儲在原始數據的原始密鑰,還創建一個自動遞增的整數主鍵。

+0

謝謝你的回答。很顯然,我必須找到一種方法來使用數據庫ID而不是Javascript。也許有多個AJAX請求,我想避免的東西...謝謝! –

相關問題