我怎样才能让这个跑得更快?

时间:2015-09-28 13:56:23

标签: mysql query-performance

我的查询运行得非常慢,因为我添加了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

谢谢

3 个答案:

答案 0 :(得分:0)

避免在查询中使用*。只需选择您需要的列。无论如何,请尝试这个,让我知道如果这可能更快。

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

答案 1 :(得分:0)

“id”列是否已编入索引?索引编制会加快查询速度。要找出该表上的索引,可以运行以下查询。

SHOW INDEX FROM ran_to_payment;

如果尚不存在,您可以通过更改表格来添加一个:

ALTER TABLE `ran_to_payment` ADD INDEX `ran_to_payment_id` (`id`)

答案 2 :(得分:0)

INDEX(feeType, refLedgerID) -- on r
INDEX(studentLedgerID) -- on g (if it is not already the PRIMARY KEY