我怎样才能使 运行 更快?

How may I make this run faster?

自从我添加了 ORDER BY r.id DESC 后,我的查询 运行 变得非常慢。没有限制它 运行 也真的很慢。请让我知道如何让它 运行 更快。

SELECT * FROM gl g, ran_to_payment r
WHERE r.refLedgerID = g.studentLedgerID
AND r.refLedgerID != 0
AND g.subAccount > 0
AND r.feeType = 1
AND g.subAccount != r.ran
ORDER BY r.id DESC
LIMIT 100

谢谢

避免在查询中使用*。只需 select 您需要的列。不管怎样,请试试这个,让我知道是否可以更快一点。

SELECT * FROM gl g
INNER JOIN ran_to_payment r ON r.refLedgerID = g.studentLedgerID
AND r.refLedgerID != 0
AND g.subAccount > 0
AND r.feeType = 1
AND g.subAccount != r.ran
ORDER BY r.id DESC

"id" 列是否已编入索引?将其编入索引会加快您的查询速度。要找出你在 table 上有哪些索引,你可以 运行 以下查询。

SHOW INDEX FROM ran_to_payment;

如果尚不存在,您可以像这样更改 table 来添加一个:

ALTER TABLE `ran_to_payment` ADD INDEX `ran_to_payment_id` (`id`)
INDEX(feeType, refLedgerID) -- on r
INDEX(studentLedgerID) -- on g (if it is not already the PRIMARY KEY