php - MySQL语句性能和优化

标签 php mysql sql

我需要您提供有关遍历数据库并从数据库返回值的最佳方法的建议(如下所示)。数据库的结构由另一个应用程序设置。

在这种情况下,系统当前如何返回 ID=6 的用户的值:

查找项目实例和项目模块(1 和训练)并返回行 ID。使用此行 ID,在表 2 中查找相应的 itemid 和 userid。

成绩_成绩

Table1

成绩项目

Table2

当前的 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/

相关文章:

javascript - 使用 AJAX 从 PHP 检索数据发送到不同的 PHP 文件

java - JDBC MySQl 不显示结果集

mysql - SQL : Alias in FROM subquery MySQL doesn't work

mysql - 如何使用 laravel eloquent 从右边的 sql 中获取 5 个字符?

php - 奇怪的引号行为

php - 如何将查询放在 while 之外但在 while 中使用它?

mysql - node js 从 mysql 中获取图像并显示在 html 页面中

sql - 选择具有优先级值的非重复行

php - 获取 YouTube 缩略图并将其保存到网络服务器

php - 在 PHP 类中建立变量作用域?