Puncte:-1

SQL - Cum să evitați citirea valorii din coloana XML din cauza problemelor de performanță

drapel mx

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)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.