【发布时间】:2017-01-05 03:42:08
【问题描述】:
我正在使用以下代码来选择我想要的行,但问题是它在从其他表中选择 DocumentNumber 列时性能低,问题出在这部分 ---> ('IN-'+@ItemStatus+ '#'+支票)
SELECT
Banking.ReceivedCheque.Date, Banking.ReceivedCheque.StatusDate,
Banking.ReceivedCheque.DueDate, Banking.ReceivedCheque.ChequeSerial,
Banking.ReceivedCheque.BankName Banking.ReceivedCheque.CompanyInfoFK,
Banking.ReceivedCheque.FinancialPeriodFK,
Banking.ReceivedCheque.CreditGFK, Banking.ReceivedCheque.CreditID,
ReceivedFromAccount = dbo.getname(CreditID, CreditGFK, FinancialPeriodFK),
DefBankAccount = dbo.getname(DefaultBankID, '4', FinancialPeriodFK),
Banking.ReceivedCheque.StatusFK,
Banking.ChequeStatus.Title,
(SELECT MAX(DocumentFK)
FROM Accounting.DocumentDetail
WHERE ItemFK = ('IN-' + @ItemStatus + '#' + chequeserial)
AND financialPeriodFK = @FinancialPeriodFK) AS DocumentNumber
FROM
Banking.ReceivedCheque
INNER JOIN
Banking.ChequeStatus ON Banking.ReceivedCheque.StatusFK = Banking.ChequeStatus.ChequeStatusID
WHERE
ReceivedCheque.FinancialPeriodFK = @FinancialPeriodFK
AND Banking.ReceivedCheque.StatusFK = @StatusFK
如果有任何其他解决方案可以提高性能,请告诉我。
【问题讨论】:
-
我相信这个问题更适合codereview.stackexchange.com
-
将执行计划添加为xml和可用索引
-
这适用于哪个 RDBMS?请添加标签以指定您使用的是
mysql、postgresql、sql-server、oracle还是db2- 或其他完全不同的东西。 -
是sql server 2008 r2
标签: sql performance concatenation where