MySQL加入vs子查询vs?

时间:2013-12-13 00:06:09

标签: mysql

希望避免未来增长的潜在问题(想想表中数十万条记录)

我有两个表,一个包含文档,另一个包含这些文档的类别。基本上,文档可以有许多类别。我希望能够返回文档的所有相应类别,有点像

doc.id,doc.name,....,category1,category2

图有两种方法可以实现这个

a)加入使用类似的东西将表连接在一起,然后解析输出。这里的问题是我们将文档的数据复制到属于

的多个类别
SELECT id, name, ..., category 
FROM doc
LEFT OUTER JOIN category ON (doc.id = category.docId)

b)子查询使用suq查询将所有类别连接在一起。这里的问题是潜在的性能问题

SELECT
  id, name, ....
  (SELECT group_concat(category,',') FROM category where category.docId = doc.id) as category
from doc

或其他任何可能更有效的想法,牢记性能?

1 个答案:

答案 0 :(得分:1)

创建一个视图,这可能是最初的解决方案a)但是如果需要,可以在DB中稍后更改为解决方案b)或c)。这样就不需要更改客户端代码了。