优化 SELECT id,title,subtitle,label,( SELECT COUNT(*) FROM content_info WHERE theme_id=topic.id AND is_delete=1 GROUP BY id) AS contentNum,( SELECT COUNT(*) FROM content_info WHERE theme_id=topic.id AND is_delete=1 GROUP BY union_id) AS peopleNum FROM topic
时间: 2024-03-25 11:40:13 浏览: 106
SQL 的 SELECT 语句优化
这个 SQL 查询语句中包含了两个子查询,可能会对查询性能产生一定的影响。可以尝试使用 JOIN 或者子查询优化来提高查询性能。
以下是使用 JOIN 进行优化的示例代码:
```
SELECT topic.id, topic.title, topic.subtitle, topic.label,
COUNT(DISTINCT content_info.id) AS contentNum,
COUNT(DISTINCT content_info.union_id) AS peopleNum
FROM topic
LEFT JOIN content_info ON topic.id = content_info.theme_id
WHERE content_info.is_delete = 1
GROUP BY topic.id;
```
这个查询语句使用了 LEFT JOIN 将 topic 表和 content_info 表连接起来,然后使用 WHERE 子句过滤掉 is_delete 不为 1 的记录。最后使用 GROUP BY 子句对 topic.id 进行分组,使用 COUNT 函数统计 content_info 表中的记录数量。
另外,可以考虑对 topic.id、content_info.id、content_info.union_id 这些字段创建索引,以提高查询性能。
阅读全文