首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个查询的MySQL和PHP性能

问多个查询的MySQL和PHP性能
EN

Stack Overflow用户
提问于 2014-07-31 15:20:56
回答 2查看 163关注 0票数 2

我在问你一些建议。我有一个网站,我有视频和用户可以给他们拇指向上和拇指向下。他们被保存在一张桌子上。目前,我有三个sql查询来获取大拇指的计数、拇指向下的计数和登录用户提供的内容(如果他这样做的话)。

现在我正在考虑提高性能,但是我不知道还有什么更好,因为我希望减少查询的数量。

方法1)保持这三个查询的原样:

代码语言:javascript
复制
SELECT COUNT(*) as rowcount FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND `thumb` = '1' LIMIT 1
SELECT COUNT(*) as rowcount FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND `thumb` = '0' LIMIT 1
SELECT * FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND `uid` = '1' LIMIT 1

方法2)使用子查询进行一个查询(类似这样的查询(这里不工作)):

代码语言:javascript
复制
SELECT *, (SELECT COUNT(*) as rowcount FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND `thumb` = '1' LIMIT 1) as thumbsups, (SELECT COUNT(*) as rowcount FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND `thumb` = '0' LIMIT 1) as thumbsdowns FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx' AND (`uid` = '1' OR `uid` = NULL)

方法3)也许是你自己的想法?

告诉我你的想法,并给出一些代码(如果你想)。

向夏洛特问好

编辑:我将添加更多信息: vid是视频的id。所有关于喜欢的内容都存储在这个表中,它引用了带有VideoID (vid)的视频。uid是表示类似(或不喜欢)的UserID。这意味着这张桌子上不仅有一个视频的好恶之处。要知道哪一种喜欢和不喜欢是为了哪一种视频,类似的东西将与视频一起存储。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-31 15:25:12

或者您可以使用一个查询来查询向上/向下的投票:

代码语言:javascript
复制
SELECT SUM(thumb = 1) AS upvote, SUM(thumb = 0) AS downvote, ....

MySQL将获取这些thumb = X测试的布尔值真/假结果,转换为整数0或1,然后将它们相加。

票数 6
EN

Stack Overflow用户

发布于 2014-07-31 15:24:52

您可以组合前两个查询,如:

代码语言:javascript
复制
SELECT
  SUM(IF(`thumb` = 1, 1, 0)) AS rowcountthumb0,
  SUM(IF(`thumb` = 0, 1, 0)) AS rowcountthumb1
FROM `videolikes` WHERE `vid` = 'gt6w_RZfs5yx'

由于上一个查询在语义上似乎不同,为了清楚起见,我会将它与这里提到的查询分开。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25062824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档