Mysql查询优化

标签 mysql

我有以下 MySQL 表...

用户表

| id  | account_number | referred_by |
+-----+----------------+-------------+
| 44  | 100            | 200         |
+-----+----------------+-------------+
| 182 | 200            | 500         |
+-----+----------------+-------------+
| 184 | 300            | 500         |
+-----+----------------+-------------+

收入表

| id  | account_number | earnings    |
+-----+----------------+-------------+
| 44  | 100            | 50.00       |
+-----+----------------+-------------+
| 182 | 200            | 20.00       |
+-----+----------------+-------------+
| 184 | 300            | 10.00       |
+-----+----------------+-------------+

例如,我正在尝试获取推荐成员(member)赚取的total_earnings 总和。 如果成员(member)的总收入为 30.00refered_by 帐号“500”,并且我已尝试执行以下 MySQL 查询...

SELECT SUM(earnings) 
FROM earnings 
WHERE account_number IN 
    (SELECT account_number FROM users WHERE referred_by = 500);

但是这太慢了。我该如何优化这个查询?

最佳答案

会尝试这个吗?

SELECT SUM(earnings.earnings)
FROM earnings INNER JOIN users USING(account_number)
WHERE users.referred_by = 500;

用户表应包含INDEX(referred_by, account_number)收入应包含INDEX(account_number)

关于Mysql查询优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311929/

相关文章:

php - 适用于 PHP,不适用于 PHPUnit

mysql - Laravel Eloquent 查询加入类似

python - 从 Python 向 MySQL 插入 unix 时间戳

mysql - 无法使用 mysql 插入查询插入文本

MySQL在2个表之间查询并发现不为空

mysql - 从日期字段mysql中提取年和月

mysql - 如何通过 SQL 查询将 SQL 结果括起来?

javascript - AJAX post success.alert后如何显示警报?

php - PDO不会执行更新

php - laravel 中的分页功能,问题 : Call to a member function paginate() on array