2

假设我有一个 MySQL 表

id (primary key), tag,    entity id
1,                food,   77
2,                shop,   98
3,                food,   32
...

我想返回按条目数递减排序的同一标签的总数。阿卡,

tag,     count
food,    2
shop,    1
...

我将如何为此编写有效的查询?创建一个单独的计数器表以提高此类查询的效率会更好吗?

谢谢!

4

2 回答 2

1

这会成功的

SELECT tag, COUNT(*) `count`
  FROM table1
 GROUP BY tag
 ORDER BY `count` DESC

输出:

| 标签 | 计数 |
|--------|--------|
| 食品| 2 |
| 店铺 | 1 |

这是SQLFiddle演示

于 2013-09-06T07:41:15.950 回答
0

根据 MySQL Docs,为 GROUP BY 使用索引的最重要的先决条件是所有 GROUP BY 列都引用来自同一索引的属性。

我猜你的查询会是这样的:

Select tag, count(*) from your_table group by tag order by 2 desc;

因此,您应该索引“标签”列以改进查询。

于 2013-09-06T07:44:57.407 回答