我需要您提供有关遍历数据库并从数据库返回值的最佳方法的建议(如下所示)。数据库的结构由另一个应用程序设置。
在这种情况下,系统当前如何返回 ID=6 的用户的值:
查找项目实例和项目模块(1 和训练)并返回行 ID。使用此行 ID,在表 2 中查找相应的 itemid 和 userid。
成绩_成绩
成绩项目
当前的 SQL/函数:
函数 1 { SELECT ID FROM grade_items WHERE itemmodule = 'training' and iteminstance = '1' }(返回 ID)
函数 2 { 使用返回的 ID,运行以下命令:SELECT * FROM grade_grades WHERE itemid = '4' AND userid = '6'}(返回最终成绩)
有没有比运行两个查询更简单的方法在一个 MYSQL 语句中获取所有这些内容? (我问的原因是因为这些查询中的每一个都有可能运行 100 到 10000 次——这取决于列表中的用户数量。目前——如果我运行查询所有记录(不分页计算总数)
最佳答案
只需将它们连接在一起即可:
SELECT g.*
FROM grade_items g
JOIN grade_grades g2
ON(g2.id = g.itemid)
WHERE g2.itemmodule = 'training' and g2.iteminstance = '1'
或者,使用 IN()
:
SELECT g.*
FROM grade_items g
WHERE g.itemid IN(SELECT g2.id FROM grade_grades g2
WHERE g2.itemmodule = 'training'
and g2.iteminstance = '1')
关于php - MySQL语句性能和优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41016861/