我为我的用户创建了一个私人消息系统,该系统是在 php 中使用 mysql 后端创建的。系统会删除旧消息,但通常保留超过 500,000 条消息。目前所有数据都包含在一个表中:
message_table
message_id (int 11)
message_from_id (int 11)
message_to_id (int 11)
message_timestamp (int 11)
message_subject (varchar 50)
message_text (text)
大多数消息都很短,所以我正在考虑将系统更改为:
message_table
message_id (int 11)
message_from_id (int 11)
message_to_id (int 11)
message_timestamp (int 11)
message_subject (varchar 50)
message_short_body (varchar 50)
message_text_id (int 11)
text_table
text_id (int 11)
text_body (text)
然后,如果输入了一条短消息,它将在“message_short_body”下输入,如果更长,将添加到“text_table”,“text_id”存储为“message_text_id”。当消息被访问时,我会得到类似的东西:
SELECT * FROM message_table LEFT JOIN text_table ON text_table.text_id = message_table.message_text_id IF message_table.message_text_id != 0 WHERE message_table.message_to_id = $user_id
我添加了“IF message_table.message_text_id!= 0”,不知道这样的事情是否可行。
作为一般规则,是否可以判断这是否会减少数据库的大小/加快查询速度?