0
我需要創建一個表,其中存儲來自不同客戶端的'事件',每個事件都有一個event_id。 event_id對於特定的客戶端是唯一的,意味着可以將event_id(integer)和client(varchar)的組合作爲主鍵。我打算使用這張表作爲我的使用休眠的Java應用程序的數據提供者。用例將添加事件,更新事件和處理事件以生成報告。快速更新mysql數據庫主鍵的選擇
我想確保快速和準確的更新,這需要獲取確切的行並在休眠中更新它。
請指點我應該是主鍵:
- 使用事項標識和客戶端柱
- 創建AUTO_INCREMENT一個額外的id列創建一個primary_key和使用事項標識和客戶端
我很困惑是否用auto_increment列創建id。
首選非功能單列純技術自動生成的主鍵。 –
@JB Nizet:在這種情況下,我需要把邏輯來決定一行是否存在或不在數據庫中。這不會減緩保存/更新過程嗎?假設我每分鐘得到1個事件,這意味着每天從一個客戶端獲得1440個事件,如果我有3個客戶端,行數將爲1440 * 3,則行數將在幾天/幾個月內快速增長。一旦我收到一個事件,我需要找出是否需要更新或保存我想決定一個表格結構,這使得插入/更新邏輯更簡單和快速?雖然我不確定製作組合鍵是否會帶來良好的表現? – girish
event_id + client是否是主鍵不會改變任何內容:您必須檢查該行是否存在。性能取決於是否爲event_id +客戶端定義了索引。不是它是否是PK。 –