php - MySQL 一对一关系优化

标签 php mysql sql subquery

好吧,我一直在尝试解决这个问题,但一直无法得出结论。我很乐意从你们那里得到一些结果、进行更多测试的提示或更多可供阅读的资源。

情况很简单。有一个主要的图片表。可能是cat_pictures。还有一个 cat_pictures_comments 辅助表。一些聪明的开发人员确保cat_pictures具有自动递增的主键ID_PICTURE,并且注释也使用ID_PICTURE的索引存储。

我们的应用程序有一个页面想要显示所有图片以及每张图片的所有评论。

我们可以吗

  1. 只需 INNER JOIN cat_picturescat_pictures_comments(并确保内容顺序正确)

  2. 获取所有cat_pictures,然后循环遍历每个图片并获取每张图片的cat_pictures_comments

答:如果应用程序是 PHP 怎么办?

B:如果 cat_pictures 具有条目 ID、图片文件路径以及猫基因组的另外 20,285 个字段会怎么样? cat_pictures 还与每只猫主人的精神科医生进行了INNER JOIN(1-1 关系)。 (基本上,与我们的小评论表相比,主表附加了更多的数据。)

谢谢大家。

最佳答案

我认为你的问题是,你是否加入回评论,然后有一个看起来像这样的查询

选项1

select (all pic columns), (all comment columns) from pics inner join comments; 

对比。选项2

Select * from pics; then loop and select * from comments were pictureId = @currentId;

对比。选项3

Select * from pics order by picId; select * from comments order by picId;

在选项 1 中,对于针对该图片发布的每条评论,图片表的每一列都会重复。如果每张图片都有很多评论并且图片表很宽,那么您可能最好从数据库中提取两个单独的数据集。

在选项 2 中,如果有很多图片,您将需要多次往返数据库。

基于缺乏完整的要求,我会推荐选项3。将图片表结果和评论作为两个单独的数据集获取,然后在您的php页面中:循环遍历每个图片并显示图片信息,然后嵌套循环以获取当前图片的评论来自已从 SQL Server 提取的本地评论数据集。

关于php - MySQL 一对一关系优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21347099/

相关文章:

php - 修改(简化)主题标题以显示在 url 中

php - JS没有执行

php - 错误:调用未定义的方法 Illuminate\Database\Query\JoinClause::whereIn()

mysql - 如何将Flash Builder 4应用程序连接到远程mySQL数据库?

mysql - 为什么在 mySQL 中转义双引号不返回结果?

sql - ORACLE 从表组中选择 ID,错误 "not a GROUP BY expression"

php get函数在wordpress中不起作用

PHP - 通用的用户友好错误消息

mysql - Bigquery 表基于日期的前导列值

mysql - SQL 查询以选择最少 10 个结果