我有一個這樣的表。提高mySQL查詢的速度
CREATE TABLE `accounthistory` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime DEFAULT NULL,
`change_ammount` float DEFAULT NULL,
`account_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
)
它的帳戶每日充電列表。如果我需要我使用的賬戶餘額 SELECT sum(change_ammount)FROM accounthistory WHERE account_id =; 它相當快,因爲我在account_id列上添加了一個索引。
但現在我需要找到時間當賬戶減去去(年月日時SUM(change_ammount)< 0) 我使用這個查詢:
SELECT main.date as date from accounthistory as main
WHERE main.account_id=484368430
AND (SELECT sum(change_ammount) FROM accounthistory as sub
WHERE sub.account_id=484368430 AND
sub.date < main.date)<0
ORDER BY main.date DESC
LIMIT 1;
但它的工作原理很慢。你能提出一個解決方案嗎? 也許我需要一些索引(不僅在account_id上)?
謝謝。我會嘗試反規範化。 – Taras