我有一个表,其中存储了与照片中识别的对象关联的数据。这意味着我每张照片可以有多行。object
显示 1 张照片中识别的 3 个对象的表格示例。object
+----+--------+---------+-----------+
| id | name | photoId | companyId |
+----+--------+---------+-----------+
| 1 | Person | 33 | 50 |
+----+--------+---------+-----------+
| 2 | Cat | 33 | 50 |
+----+--------+---------+-----------+
| 3 | Dog | 33 | 50 |
+----+--------+---------+-----------+
最终,这张桌子可能会变得巨大。如果上传了 500,000 张照片,并且每个照片中识别了 20 个对象,则为 10,000,000 行。
问题
我应该担心此表中的潜在行数吗?
有没有办法有效地查询此表,以便为自己提供每个公司已识别的前5个对象的列表?我有一个尝试,如下所示,但它似乎已经很迟钝,因为我存储的最小数据。object.companyId
我的尝试:
从 MySql 检索结果:
select * from object where companyId=50
在 PHP 中迭代结果以获取每个标签的计数:
foreach($res as $row){
//get how many times this label shows up in the results
$labelCnt = array_count_values(array_column($res, 'name'))[$row['name']];
//create an array of all label counts (label -> cnt)
$allLabelCntArr[$row['name']] = $labelCnt;
}
arsort($allLabelCnts); //sort from highest to lowest
$topFive = array_slice($allLabelCnts, 0, 5, true); //get top 5
阿晨1998