mysql - mysql数据库高效读写

标签 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 read)。

还有哪些其他可能的解决方案可以帮助我消除冗余,同时最大限度地减少读/写负载的增加?

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

谢谢!

最佳答案

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

您需要像您已有的那样的查询字符串。 为结果字符串创建另一张表,并创建另一张表来链接查询字符串和结果字符串。不要忘记外键。

关于mysql - mysql数据库高效读写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19348508/

相关文章:

mysql - 出现 1045 错误时,如何在 SQL 中导出运行查询的结果?

sql - 如何在 PostgreSQL 中实现多对多关系?

php - 如何对时间戳进行 strtotime,或者如何最好地处理 SQL 日期?

mysql - 使用集群(NDBCluster 或 Galera)时,nodejs 应用程序如何连接到故障转移 MySQL 服务器之一?

mysql - 为未使用的槽生成空行

database - 在 Cassandra 中过滤列

php - 如果状态为空而无需在 php 中提交表单,如何更新数据库中的状态?

database - 数据库游标是否获取基础数据的更改?

mysql - 如何在数据库中保存 Google map 叠加形状?

PHP - Propel PDO 无论查询如何都返回零行