Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从数据库中的tag post表中检索标记名_Mysql_Database_Database Performance - Fatal编程技术网

Mysql 从数据库中的tag post表中检索标记名

Mysql 从数据库中的tag post表中检索标记名,mysql,database,database-performance,Mysql,Database,Database Performance,首先,我想知道在我的数据库中哪一个是标签和类别的最佳实现。所以我发现最好的方法是这样的: Table: Item Columns: ItemID, Title, Content Table: Tag Columns: TagID, Title Table: ItemTag Columns: ItemID, TagID 现在我想知道如何从数据库中获得显示信息的最佳性能。所以,假设我做了一个选择,现在我有一堆“ItemID”,想知道这些元素有哪些标记。那么,您如何看待构建这样的算法: For

首先,我想知道在我的数据库中哪一个是标签和类别的最佳实现。所以我发现最好的方法是这样的:

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID
现在我想知道如何从数据库中获得显示信息的最佳性能。所以,假设我做了一个选择,现在我有一堆“ItemID”,想知道这些元素有哪些标记。那么,您如何看待构建这样的算法:

For each ItemID
   Do whatever I wanna do first
   SELECT Tag ID from table ItemTag Where ItemID
   For each unique TagID 
      SELECT Title from table Tag Where TagID
      Print on screen tag name

你认为这是个好办法吗?有没有另一种简单但性能更好的方法呢?

您可以使用
join
group\u concat()


如果只想为特定项目添加标记,可以添加一个
where
子句。

对性能没有影响,但使用标记名而不是表标记的标题。
select itemId, group_concat(t.title)
from ItemTag it join
     tag t
     on it.TagId = t.TagId
group by itemId;