ฉันยังใหม่กับ SQL คุณช่วยแนะนำฉันได้ไหมว่าฉันจะปรับปรุงด้านล่างโค้ด SQL ได้อย่างไร ฉันสังเกตเห็นการใช้ SQL profiler - การดำเนินการอ่าน XML ใช้เวลามากเกินไป
โปรดแจ้งให้เราทราบว่าฉันจะเขียนโค้ดด้านล่างใหม่ได้อย่างไร เพื่อให้ฉันเห็นการปรับปรุงประสิทธิภาพ
ที่นี่ - edata คือคอลัมน์ XML และรหัสด้านล่างเป็นส่วนหนึ่งของขั้นตอนการจัดเก็บหลักของฉัน เฉพาะรหัสด้านล่างเท่านั้นที่มีปัญหากับประสิทธิภาพ และตาราง erequest ได้รับการจัดทำดัชนีแล้ว
ประกาศ @SFD ตาราง
(
และ BIGINT,
eAmount ทศนิยม (12, 2),
วันที่ วันที่
)
แทรกลงใน @SFD
เลือก tr.etid
tr.edata.value('(EData/Amount)[1]', 'DECIMAL(12, 2)') eAmount,
tr.edata.value('(EData/DrawDate)[1]','date') eDate
จาก dbo.erequest tr
โดยที่ tr.accountid = @AccountId
ในข้อความค้นหาด้านบน - บรรทัดต่อไปนี้ใช้เวลามากเกินไป
**tr.edata.value('(EData/Amount)[1]', 'DECIMAL(12, 2)') eAmount,
tr.edata.value('(EData/DrawDate)[1]','date') eDate**
กรุณาแนะนำฉัน ฉันจะเขียนบรรทัดด้านบนในแบบสอบถาม sql หลักใหม่ได้อย่างไร เพื่อให้ฉันเห็นการปรับปรุงประสิทธิภาพ
กรุณาค้นหาแบบสอบถามด้านล่างเพื่อเติมข้อมูลตาราง:
สร้างคำขอตาราง
(
และ BIGINT,
แก้ไขข้อมูล XML,
รหัสบัญชี INT
)
INSERT INTO คำขอ (etid,edata,accountid) ค่า (2145124897,
'<ข้อมูล>
<CardHolderName>ABCFDE</CardHolderName>
<หมายเลขบัตร>K6011</หมายเลขบัตร>
<จำนวนเงิน>555.17</จำนวนเงิน>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',10)
INSERT INTO คำขอ (etid,edata,accountid) ค่า (2145124897,
'<ข้อมูล>
<CardHolderName>ABCFDE</CardHolderName>
<หมายเลขบัตร>K6011</หมายเลขบัตร>
<จำนวนเงิน>555.17</จำนวนเงิน>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',20)
INSERT INTO คำขอ (etid,edata,accountid) ค่า (2145124897,
'<ข้อมูล>
<CardHolderName>ABCFDE</CardHolderName>
<หมายเลขบัตร>K6011</หมายเลขบัตร>
<จำนวนเงิน>555.17</จำนวนเงิน>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',30)
INSERT INTO คำขอ (etid,edata,accountid) ค่า (2145124897,
'<ข้อมูล>
<CardHolderName>ABCFDE</CardHolderName>
<หมายเลขบัตร>K6011</หมายเลขบัตร>
<จำนวนเงิน>555.17</จำนวนเงิน>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',12)
INSERT INTO คำขอ (etid,edata,accountid) ค่า (2145124897,
'<ข้อมูล>
<CardHolderName>ABCFDE</CardHolderName>
<หมายเลขบัตร>K6011</หมายเลขบัตร>
<จำนวนเงิน>555.17</จำนวนเงิน>
<DrawDate>2022-05-18</DrawDate>
<CurrencyCode>USD</CurrencyCode>
</edata>',16)