I have a private messaging system for my users that I've created in php with a mysql backend. The system deletes old messages but generally holds over 500,000 messages. Currently all of the data is included in one table:
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)
The majority of messages are very short so I'm considering changing the system to:
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)
Then if a short message is entered it will be entered under 'message_short_body' and if longer will be added to 'text_table' and the 'text_id' stored as 'message_text_id'. When messages are access I would then have something like:
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
I added "IF message_table.message_text_id != 0" and don't know if something like that is possible.
As a general rule is it possible to tell if this would reduce the size of the database / speed up queries ?