代码之家  ›  专栏  ›  技术社区  ›  Prashant Singh

mysql数据库中高效的读写

  •  0
  • Prashant Singh  · 技术社区  · 11 年前

    我有一个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。所以,在我看来,这似乎效率低下。

    还有哪些可能的解决方案可以帮助我在读/写负载增加最小的情况下消除冗余?

    如果我不清楚自己的疑问,请发表评论。

    谢谢

    1 回复  |  直到 11 年前
        1
  •  1
  •   Jonysuise    11 年前

    这似乎是查询和结果字符串之间的N:N关系,因此:

    您需要像现有的查询字符串一样的查询字符串。 为结果字符串创建另一个表,再创建一个表来链接查询字符串和结果字符串。别忘了带外键。