Sunt nou în SQL, ați putea vă rog să-mi sugerați cum mă pot îmbunătăți sub codul SQL, am observat că folosirea SQL profiler - operația de citire XML durează prea mult.
Vă rugăm să-mi spuneți cum rescriu codul de mai jos, astfel încât să pot vedea îmbunătățiri ale performanței.
Aici - edata este coloana XML și codul de mai jos face parte din procedura mea principală stocată , doar codul de mai jos are o problemă cu performanța și tabelul de solicitare este deja indexat
DECLARE @SFD TABLE
(
studi BIGINT,
eAmount DECIMAL(12, 2),
eDate DATE
)
INSERT ÎN @SFD
SELECTează tr.etid,
tr.edata.value('(EData/Amount)[1]', 'DECIMAL(12, 2)') eAmount,
tr.edata.value('(EData/DrawDate)[1]','data') eDate
DIN dbo.erequest tr
WHERE tr.accountid = @AccountId
ÎN interogarea de mai sus - următoarele linii necesită prea mult timp,
**tr.edata.value('(EData/Amount)[1]', 'DECIMAL(12, 2)') eAmount,
tr.edata.value('(EData/DrawDate)[1]','data') eDate**
Vă rog să mă sfătuiți, cum rescriu liniile de mai sus în interogarea SQL principală, astfel încât să pot vedea îmbunătățirea performanței.
Vă rugăm să găsiți interogarea de mai jos pentru a completa datele din tabel:
Creați tabel erequest
(
studi BIGINT,
edata XML,
accountid INT
)
INSERT INTO erequest (etid,edata,accountid) VALUES (2145124897,
„<edata>
<CardHolderName>ABCFDE</CardHolderName>
<CardNumber>K6011</CardNumber>
<Sumă>555,17</Sumă>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',10)
INSERT INTO erequest (etid,edata,accountid) VALUES (2145124897,
„<edata>
<CardHolderName>ABCFDE</CardHolderName>
<CardNumber>K6011</CardNumber>
<Sumă>555,17</Sumă>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',20)
INSERT INTO erequest (etid,edata,accountid) VALUES (2145124897,
„<edata>
<CardHolderName>ABCFDE</CardHolderName>
<CardNumber>K6011</CardNumber>
<Sumă>555,17</Sumă>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',30)
INSERT INTO erequest (etid,edata,accountid) VALUES (2145124897,
„<edata>
<CardHolderName>ABCFDE</CardHolderName>
<CardNumber>K6011</CardNumber>
<Sumă>555,17</Sumă>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',12)
INSERT INTO erequest (etid,edata,accountid) VALUES (2145124897,
„<edata>
<CardHolderName>ABCFDE</CardHolderName>
<CardNumber>K6011</CardNumber>
<Sumă>555,17</Sumă>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',16)