我正在使用MySQL来存储视频游戏数据.我有标题,平台,标签,徽章,评论,开发人员,出版商等表...
当有人正在观看游戏时,最好是有一个查询返回与游戏相关的所有数据,还是最好使用多个查询?直觉上,由于我们有评论,因此将它们包含在同一个查询中似乎毫无意义,因为它们需要进行分页.但是在其他情况下,我不确定是要打破查询还是使用两个查询......
我有点担心表现,因为我现在加入以下表格的游戏:开发者,出版商,元标签,徽章,标题,流派,子类,分类......以获取游戏徽章,(来自games_badges;很多 - 来自 - 很多游戏桌,很多很多到徽章表)我可以做另一个连接,或运行一个单独的查询....我不确定什么是最好的....
我正在构建一个PHP页面,其中包含从MySQL发送的数据.
拥有它会更好吗?
SELECT查询,包含4个表连接,或SELECT没有表连接的4个小查询; 我从ID中选择哪个更快,每个方法的pro/con是什么?我每个表只需要一行.
我想知道,在带宽和整体效率方面哪个选项最贵.
假设Client我的应用程序中有一个类,client数据库中有一个表.
它是最好有一个静态函数Client.getById检索整个客户端记录或多个(Client.getNameById,Client.getMobileNumberById即检索各领域,等等)?
如果单个记录有很多字段,并且我最终在当前脚本中使用了一个或两个,那么检索所有内容并在应用程序内部决定如何处理所有数据仍然更好吗?
以下哪一种方法更有效:
单个较长的查询:
"SELECT COUNT( * ) AS num
FROM (
SELECT users.UID, cnumber
FROM users
JOIN identity ON users.UID = identity.UID
WHERE 'abc'
IN (google, facebook, twitter, linkedin)
) AS userfound
JOIN jobs ON userfound.cnumber = jobs.cnumber
WHERE JID = 24";
if(resultfromquery == 1)
//Some code here
else
//Some code here
Run Code Online (Sandbox Code Playgroud)将较长的查询分解为多个单表查询:
uid = "SELECT UID FROM identity WHERE 'abc' IN (google, facebook, twitter, linkedin)";
cnumber_from_usertable = "SELECT cnumber FROM users WHERE UID = 'uid'";
cnumber_from_jobtable = "SELECT cnumber FROM …Run Code Online (Sandbox Code Playgroud)我正在运行一个cron任务,它会向MySQL服务器发出大量查询.最大的问题是服务器有时运行得非常慢.
我有一个相对较大的查询,其中4个表连接在它们之间,4个较小的查询与natural joins也攻击第一个表.抛出这些查询后,我会处理结果并使用它们进行分组PHP.
我计划的是以某种方式将这5个查询混合到一个大查询中,然后在我需要时PHP快速做一些sort().
我也被告知MySQL查询运行速度比PHP过滤和排序要快,但在谈论有7或8个左连接时,我有理由担心它.有关这些查询的更多规范(由于公司政策,我无法复制):
GROUP BY规则.PHP代码将一些辅助查询结果拆分为多个数组.如果使用大查询,它也应该按多个参数对结果进行排序.所以,由于这些问题,也许作为一个经验法则:
什么是更快,一个大的连接查询与更多的PHP或多个小选择与较少的PHP?
mysql ×5
optimization ×2
php ×2
bandwidth ×1
database ×1
left-join ×1
multi-query ×1
performance ×1