我想在MySql數據庫中存儲以下數據(通知數據):id: VARCHAR(10)from_id: VARCHAR(10)to_id: VARCHAR(10)類型:int(2)type_info:(本專欄的問題)日期:時間戳知道該列type_info根據列的內容確定其內容,type我有4種情況:如果 type = 1 type_info 將為空如果類型 = 2 類型信息 = id1如果類型 = 3 type_info = id1/id2如果類型 = 4 type_info = id1/id2/id3筆記:-id1,id2和id3是VARCHAR(10)(是評論,回復,頁面的id......)- 要提取值(id1、id2 和 id3),我在 / (PHP)上使用explode() 函數- type_info列不需要更新其內容。我所需要的只是 INSERT 和 SELECT-我以 gson 形式獲取數據。所以我的問題是:為了提高查詢SELECT * FROM table WHERE date > dateValue 速度,我是保持表設計不變還是有更高效的設計?如果我把Table按類型列分成4張表,是不是會更好?通知表: id/from_id/to_id/type/dateType_1表:notfication_i/id1Type_2表:notfication_i/id1/id2Type_3表:notfication_i/id1/id2/id3注意:上面只考慮提高查詢速度的最佳表設計這樣的設計合適嗎?
1 回答

萬千封印
TA貢獻1891條經驗 獲得超3個贊
簡單的答案 - 將多個數據項嵌入到單個列中是不好的做法。由于您的數據包含多個不同表中的外鍵列表,因此您應該創建單獨的列,每個潛在外鍵對應一個列。
每列都有自己的索引,允許快速查找每種數據類型的數據,而無需使用字符串函數操作數據。
擁有 3 個可能為空的列的開銷可以忽略不計。
- 1 回答
- 0 關注
- 146 瀏覽
添加回答
舉報
0/150
提交
取消