在mysql数据库中高效读写

时间:2013-10-13 18:09:36

标签: mysql database-design database database-normalization

我有一个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 个答案:

答案 0 :(得分:1)

这似乎是查询和结果串之间的N:N关系所以:

你需要像你已经拥有的那样的Querystrings。 为结果字符串创建另一个表,并创建另一个表以链接查询字符串和结果字符串。不要忘记外键。