mysql - 有没有办法重写此查询以作为 SQL View 工作

标签 mysql sql phpmyadmin

我成功编写了以下查询,效果很好。我的问题是我多次使用它,我认为它有自己的 View ,但是当我让 phpmyadmin 为我创建 View 时,过去需要 0.0060 秒的查询现在需要 6.2094 秒。

我的查询:

SELECT tr.uuid, tr.creator,
(
    SELECT
    GROUP_CONCAT(name)
    FROM tags as t1
    WHERE t1.uuid = tr.uuid and t1.type = "name"
    GROUP BY t1.uuid
) as names,
(
    SELECT GROUP_CONCAT(name)
    FROM tags as t2
    WHERE t2.uuid = tr.uuid and t2.type = "tag"
    GROUP BY t2.uuid
) as tags

FROM `tags` as tr

phpMyAdmin 的转换:

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` 
SQL SECURITY DEFINER 
VIEW `textagname` AS 
select 
`tr`.`uuid` AS `uuid`,
`tr`.`creator` AS `creator`,
(
    select group_concat(`t1`.`name` separator ',') AS `GROUP_CONCAT(name)` 
    from `tags` `t1` 
    where ((`t1`.`uuid` = `tr`.`uuid`) and (`t1`.`type` = 'name')) 
    group by `t1`.`uuid`
) AS `names`,
(
    select group_concat(`t2`.`name` separator ',') AS `GROUP_CONCAT(name)`
    from `tags` `t2` 
    where ((`t2`.`uuid` = `tr`.`uuid`) and (`t2`.`type` = 'tag')) 
    group by `t2`.`uuid`
) AS `tags` 
from `tags` `tr`

关于如何让我的 View 更有效率,有什么想法吗?

ps:下面是tags表结构:

Column   Type         Null  Default  Comments
-------  -----------  ----  -------  ------------------
uuid     varchar(36)  No             key of texture
name     varchar(64)  No             tag name
creator  varchar(36)  Yes   NULL     creator of the tag
type     varchar(36)  No             name, or tag

最佳答案

无法真正解释为什么您的查询在由 phpMyAdmin 转换为 View 时变得更慢,但我会改为尝试以下查询:

SELECT
  uuid,
  creator,
  GROUP_CONCAT(CASE type WHEN 'name' THEN name END) AS names,
  GROUP_CONCAT(CASE type WHEN 'tag'  THEN name END) AS tags
FROM tags
WHERE type IN ('name', 'tag')
GROUP BY
  uuid,
  creator

关于mysql - 有没有办法重写此查询以作为 SQL View 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373352/

相关文章:

mysql - 从 .sql 文件为 mysql 创建数据库模式图

sql - 如何根据一行中的值使一个标识符的所有值都相同?

sql - 如何创建存储在 xml 对象中的表、列和相应值的快照

mysql - 将 bool 值设置为 mysql 记录指示在所选时间戳范围之前是否存在其他记录

mysql - 触发器语法错误

mysql - 一列或单独的列用于额外数据 - mysql

mysql - REGEXP MySQL - 几个组,无论哪个顺序

mysql - 导出的 Excel 文件显示错误

php - 嵌套的 Foreach 循环花费太多时间

Mysql 无法正常工作