2013-10-13 50 views
0

我有一個存儲一組查詢(字符串)的mysql表。高效讀寫mysql數據庫

表與它的內容是這樣的: -

query_id queryString 
    1.   Query 1 
    2.   Query 2 
    3.   Query 3 

結果表,它以某種方式與上述查詢被存儲在所示的形式不同的MySQL表

result_id query_id resultString 
    1.   1  Result 1 
    2.   1  Result 2 
    3.   2  Result 3 
    4.   2  Result 4 
    5.   2  Result 1 
    6.   3  Result 3 
    7.   3  Result 4 
    8.   3  Result 5 

顯然,上述模型具有冗餘,如我必須存儲結果1結果3結果4莫不止一次。隨着類似查詢數量的增加,這種冗餘度進一步增加。因此,可以說如果我必須對結果查詢進行一些處理,那麼我必須對多個重複值進行處理。

在另一個替代方案,我能想到的是,我可以在表獨特的存儲結果,並存儲它們沿着指在查詢表中查詢results_id。但是在那種情況下,在閱讀查詢結果的同時,我將不得不打一些mysql查詢,其中一個對應於我擁有的每個result_id。所以,這對我來說看起來效率低下(w.r.t)。

什麼其他可能的解決方案可以幫助我在讀/寫負載的增加最小去除冗餘?

如果我不清楚詢問我的疑問,請發表評論。

謝謝!

回答

1

看來這是一個N:N querys和resultstrings這樣的關係:

你需要像你已經有一個查詢字符串。 爲結果行創建另一個表並創建另一個鏈接querystrings和resultstrings。不要忘記外鍵。

+0

但是,它們不是唯一的。那就是我在例子中提到的。前 - 結果1是爲查詢1和查詢2 –

+0

,但這兩個值的組合實際上是唯一的..在關係的角度來看,你的表是OK的。 – Jonysuise

+0

是的,但我想無論如何去除冗餘作爲對他們的處理是非常昂貴 –