SELECT
CONVERT(INT, 0) AS SeqNo,
id AS ID,
[pi no] AS InvoiceNo,
[pi date] AS InvoiceDate,
PM.partyname AS VENDORNAME,
docno AS DOCNO,
(
CASE
WHEN [docdate] = '0001-01-01' THEN NULL
WHEN [docdate] = '1900-01-01' THEN NULL
ELSE [docdate]
END
) AS DOCDATE,
AD.againstinvoiceno AS AgainstNo,
(
CASE
WHEN AD.againstinvoicedate = '0001-01-01' THEN NULL
WHEN AD.againstinvoicedate = '1900-01-01' THEN NULL
ELSE AD.againstinvoicedate
END
) AS AgainstDate,
Isnull(
Stuff((
SELECT
CHAR(10)
+ ('[ '
+ BR.againstinvoiceno
+ ' - '
+ CONVERT(VARCHAR(100), BR.againstinvoicedate, 103)
+ ' ]')
FROM (
SELECT
pimasterid,
againstinvoiceno,
againstinvoicedate
FROM purchaseinvoicedetails
WHERE againstinvoiceid > 0
GROUP BY
pimasterid,
againstinvoiceno,
againstinvoicedate
) BR
WHERE PIM.id = BR.pimasterid
FOR XML path('')
), 1, 1, ''),
'') AS AgainstInfo,
PIM.[net pivalue] AS NetAmount
FROM purchaseinvoice PIM
LEFT JOIN (
SELECT
PIND.pimasterid,
againstinvoiceno,
againstinvoicedate
FROM purchaseinvoicedetails PIND
INNER JOIN (
SELECT
pimasterid,
Min(id) AS MINID
FROM purchaseinvoicedetails
WHERE againstinvoiceid > 0
GROUP BY pimasterid
) MINRD ON MINRD.minid = PIND.id
) AD ON AD.pimasterid = PIM.id
INNER JOIN (
SELECT
partycode,
partyname
FROM partymaster
) PM ON PM.partycode = PIM.[vendor id]
WHERE PIM.[status] = 0
AND PIM.loccode = 1
ORDER BY id DESC
我需要优化上面提到的查询。有时需要超过一分钟才能显示结果。我们检查了没有索引的表,因此我们根据 Tuning advisor 的建议添加了索引,之后它显示高扫描计数和排序成本。您能帮忙解决这个问题吗?