假设我有一个MySQL表
id (primary key), tag, entity id
1, food, 77
2, shop, 98
3, food, 32
...
我想返回以减少的条目数排序的相同标签的总计数。阿卡,
tag, count
food, 2
shop, 1
...
我如何为此编写有效的查询?创建一个单独的计数器表来提高这类查询的效率会不会更好?
谢谢!
答案 0 :(得分:1)
这样就可以了解
SELECT tag, COUNT(*) `count`
FROM table1
GROUP BY tag
ORDER BY `count` DESC
输出:
| TAG | COUNT | |------|-------| | food | 2 | | shop | 1 |
这是 SQLFiddle 演示
答案 1 :(得分:0)
根据MySQL Docs,使用GROUP BY索引的最重要前提条件是所有GROUP BY列都引用同一索引的属性。
我猜你的查询会是这样的:
Select tag, count(*) from your_table group by tag order by 2 desc;
因此,您应该对“标记”列编制索引以改进查询。