我正在開發一個最終將擁有數百萬用戶的系統。系統的每個用戶都可以訪問系統中不同的「選項卡」。我正在用一個名爲usertabs的表跟蹤這個問題。有兩種方法可以處理這個問題。簡單記錄的Mysql優化 - 什麼是最好的?
方式1:包含用戶標識和tab1-tab10作爲int列的每個用戶的單行。
該系統的優點是,通過用戶ID獲得單行的查詢速度非常快,而缺點是「空」列佔用空間。另一個缺點是,當我需要添加一個新選項卡時,如果有數百萬條記錄,我將不得不重新組織整個表。但是這不會經常發生。
方式2:單行包含userid和tabid,這就是全部。每個用戶最多可以有10行。
該系統的優點是容易分片或其他機制優化存儲和沒有浪費的空間。行僅在必要時才存在。缺點是每次訪問記錄時必須讀取10行。如果這些行是分散的,它們可能會更慢或更快,這取決於它們的存儲方式。
我的程序員側朝路1傾斜,而我的大數據側朝路2
,你會選擇哪傾斜?爲什麼?
推論:確保您爲所有加入的字段創建索引。 – Barmar
謝謝內維爾。我正在這樣傾斜。只是想知道其他人是否有不同的意見。 '便利。方式2可以通過模型本身的方式2輕鬆克服,使'使用'代碼完全相同。 (在控制器的頂層等)。 –