查询标签的性能

时间:2014-04-15 23:48:12

标签: mysql sql performance

我正在创建一个由MySQL数据库支持的系统,并且出现了一个关于什么是最佳实践的问题。

我有一个“群组”实体,其中包含零个或多个"标签"。

表格可以表示为:

Groups
+-------+--------+
| id    | name   |
+-------+--------+
|     1 | Group1 |
|     2 | Hey Guy|
|     3 | Chacko |
|     4 | Dropo  |
+-------+--------+

GroupsTags
+-------+--------+
|idGroup| idTag  |
+-------+--------+
|     1 |      1 |
|     1 |      2 |
|     2 |      1 |
+-------+--------+

Tags
+-------+--------+
| id    | name   |
+-------+--------+
|     1 | Health |
|     2 | Happy  |
+-------+--------+

系统,在“组”注册期间,我希望自动完成每个按键,显示最流行的标签,类似于StackOverflow。换句话说,我必须在数据库中为每个字母类型进行查询,按人气排序。

哪种解决方案最好?

什么是最好的?

select count(*) as qt,Tags.nome from GroupsTags
inner join Tags
on Tags.id = GroupsTags.idTag
where Tags.name like "phrase%"
group by GroupsTags.idTag
order by qt desc

或保存在Tags表中,使用它的次数。喜欢这个

Tags
+-------+--------+--------+
| id    | name   | qtUsed |
+-------+--------+--------+
|     1 | Health |      2 |
|     2 | Happy  |      1 |
+-------+--------+--------+

select * from Tags where name like "phrase%" order by qtUsed desc

我想知道是否确实需要使用标签的次数来获得更好的性能。这会是一种不好的做法吗?

0 个答案:

没有答案