【发布时间】:2015-09-30 09:14:13
【问题描述】:
我有这个问题
SELECT debtDinar,
creditDinar,
debtDollar,
creditDollar AS creditDollar,
companyID,
costCenter,
accountnumber,
accountName,
activityNo,
activityName,
name,
if((debtDinar-creditDinar) >= 0.000,(debtDinar-creditDinar),0.000) AS debtDinarEx,
if((debtDinar-creditDinar) >= 0.000,0.000,abs(debtDinar-creditDinar)) AS creditDinarEx,
if((debtDollar-creditDollar) >= 0.00,(debtDollar-creditDollar),0.00) AS debtDollarEx,
if((debtDollar-creditDollar) >= 0.00,0.00,abs(debtDollar-creditDollar)) AS creditDollarEx
FROM
(SELECT SUM(recordsdetails.debtor) AS debtDinar,
SUM(recordsdetails.creditor) AS creditDinar,
SUM(recordsdetails.debtDollar) AS debtorDollar,
SUM(recordsdetails.creditDollar) AS creditDollar,
companies.name AS name,
recordsdetails.companyID AS companyID,
costCenter AS costCenter,
accounts.accountnumber AS accountnumber,
accounts.accountName AS accountName,
recordsdetails.activityNo AS activityNo,
recordsdetails.activityName AS activityName
FROM (records,
accounts
JOIN (companies
LEFT JOIN recordsdetails on((recordsdetails.companyID = companies.companyID))))
WHERE left(recordsdetails.accountnumber,1)=accounts.accountnumber
AND (recordsdetails.companyID = 1)
GROUP BY accounts.accountnumber,
costCenter
ORDER BY accounts.sortorder) AS recordsdetails
获取数据的速度非常慢,大约需要 30-60 秒,当数据增加时它会变得更慢,有什么想法可以让这个查询变得简单
【问题讨论】:
-
显示一些虚拟数据......你想要达到的目标
-
索引索引索引
-
看起来不对:
WHERE left(recordsdetails.accountnumber,1)=accounts.accountnumber -
不,它工作正常,但我认为它太慢了,因为我正在使用
select from select