Mysql 如何组合两个查询以提高性能
我目前正在使用的系统是一个遗留系统。第一个查询的结果没有问题,只是查询将通过循环使用第一个查询的结果检索另一个值。我尝试将查询从order by id更改为order by date,因为如果表是order by id,我会对某些帐户产生一些问题。我还尝试更改查询,因为它当前非常缓慢。我确实将这两个查询组合在一起,但执行起来需要很长时间。 如何将两个查询连接在一起而不影响性能 /*我提到的这个查询在第一个查询中没有问题*/Mysql 如何组合两个查询以提高性能,mysql,sql,database,Mysql,Sql,Database,我目前正在使用的系统是一个遗留系统。第一个查询的结果没有问题,只是查询将通过循环使用第一个查询的结果检索另一个值。我尝试将查询从order by id更改为order by date,因为如果表是order by id,我会对某些帐户产生一些问题。我还尝试更改查询,因为它当前非常缓慢。我确实将这两个查询组合在一起,但执行起来需要很长时间。 如何将两个查询连接在一起而不影响性能 /*我提到的这个查询在第一个查询中没有问题*/ SELECT DATE_FORMAT('2016-12-12 00:00
SELECT
DATE_FORMAT('2016-12-12 00:00:00', '%Y-%m-%d') AS date,
C.id AS account_id,
C.account_no,
C.account_name,
B.amount AS last_topup,
DATE_FORMAT('2016-12-12 23:59:59', '%Y-%m-%d') AS topup_date,
NULL AS balance
FROM (SELECT
account_id,
MAX(date) date
FROM table1
GROUP BY account_id) A
INNER JOIN table1 B
USING (account_id, date)
RIGHT JOIN table2 C ON B.account_id = C.id
ORDER BY C.account_no;
/*循环查询第二个查询*/
SELECT
`t`.`balance_after` AS `balance`
FROM table3 `t`
WHERE `t`.`account_id` = '<id from the loop>' AND `t`.`date` <= '2017-07-26
23:59:59'
ORDER BY `t`.`date` DESC;
/*我将两者结合使用的查询需要很长时间才能执行*/
SELECT
DATE_FORMAT('2016-12-12 00:00:00', '%Y-%m-%d') AS date,
C.id AS account_id,
C.account_no,
C.account_name,
B.amount AS last_topup,
DATE_FORMAT('2016-12-12 23:59:59', '%Y-%m-%d') AS topup_date,
D.balance_after AS balance
FROM (SELECT
account_id,
MAX(date) date
FROM table1
GROUP BY account_id) A
INNER JOIN table1 B
USING (account_id, date)
RIGHT JOIN table2 C ON B.account_id = C.id
RIGHT JOIN table3 D ON B.account_id = D.account_id
WHERE D.date <= "2017-07-30 23:59:59"
ORDER BY C.account_no;
你能分享一下这个计划吗?在第三个查询中,有和t.date`我编辑了查询,但仍然需要很长时间才能执行。表中已经有索引了。你能分享解释计划吗?在第三个查询中,有和t.date`我编辑了查询,但仍然需要很长时间才能执行。表中已包含索引。