2010-05-17 35 views
1

我在考慮以下兩種查詢類型中的哪一種會給我的網站內用戶消息傳遞模塊帶來最快的性能:如何在mysql中存儲數據以獲得最快的性能?

我想過的第一個問題是多表設置,它有一個多表設置連接表和主表。連接表保存帳戶和消息傳遞表之間的連接。

在這種情況下,查詢看起來像下面,讓筆者的一些數據和消息,他已派出:

SELECT m.*, a.username 
    FROM messages AS m 
    LEFT JOIN connection_table 
    ON (message_id = m.id) 
    LEFT JOIN accounts AS a 
    ON (account_id = a.id) 
WHERE m.id = '32341' 

插入到它更是一個有點「複雜」。

我其他的想法,在我想到了這個問題的更好的解決辦法是我店,我會在連接表在同一個表,其中存儲是郵件的數據使用數據。聽起來像我會得到很多重複的條目,但沒有,因爲我有一個字段,它具有文本類型,並像這樣持有用戶id:* 24 * 32 * 249 * 如果我想查詢它們,我使用mysql LIKE方法。刪除是另一個問題,但爲此我有一個字段,我存儲誰刪除了該帖子。 很傷心,我不知道如何加入這個。

那麼你會推薦什麼?有其他方法嗎?

回答

3

聽起來就像您使用的是n:m關係。如果是的話,不要在單個列中放置一個id列表,但會創建一個包含兩列的映射表 - table1的主鍵和表2。然後選擇,插入和刪除將很容易,而且還很便宜。

+0

多數民衆贊成我的意思是在連接表下,但確定!謝謝 – 2010-05-17 06:27:51

1

我不知道有多少信息將被髮送給多個收件人?將它全部放在一張表中可能會更容易 - MessageID,SentFrom,SentTo,Message,並將其複製給多個人。這顯然使得查詢非常容易。

肯定避免存儲在一個領域多個ID的使用LIKE - 那將是一個性能殺手 - 同ThiefMasters建議去,如果你想這樣的事情。

相關問題