Php 渲染具有1:n关系的项网格的最优化查询是使用group_concat?

Php 渲染具有1:n关系的项网格的最优化查询是使用group_concat?,php,mysql,json,relationship,group-concat,Php,Mysql,Json,Relationship,Group Concat,在我看来,在查询数据以呈现列表视图时,使用GROUP_CONCAT的性能最好,而在不使用GROUP_CONCAT处理大型表时,这将需要几个单独的查询。无论如何,这是真的吗 除了集团规模足够大之外,还有其他不利因素吗 当你让MySQL做脏活时,它也很容易使用;这将生成有效的json生成的sql: <<<SQL SELECT CONCAT( '[{', GROUP_CONCAT( CONCAT( '"id":"', table.id,

在我看来,在查询数据以呈现列表视图时,使用GROUP_CONCAT的性能最好,而在不使用GROUP_CONCAT处理大型表时,这将需要几个单独的查询。无论如何,这是真的吗

除了集团规模足够大之外,还有其他不利因素吗

当你让MySQL做脏活时,它也很容易使用;这将生成有效的json生成的sql:

<<<SQL
SELECT CONCAT(
    '[{', 
    GROUP_CONCAT(
      CONCAT(
        '"id":"', table.id, 
        '"' "," '"filename":"', REPLACE('"', '\"', table.filenamehash), 
        '"' "," '"originalname":"', REPLACE('"', '\"', table.originalname), 
        '"'
      ) SEPARATOR '},{'
    ), 
    '}]'
  ) AS file_data
SQL;

如果其中任何一个值包含引号或反斜杠,它们将无法正确转义。这是一个主要的缺点。我会牺牲一些表现来克服这个问题。我添加了替换函数来解决这个问题,我认为这应该足够了吗?