Điểm:-1

SQL - Cách tránh đọc giá trị từ cột XML do vấn đề về hiệu suất

lá cờ mx

Tôi chưa quen với SQL, bạn có thể vui lòng gợi ý cho tôi cách cải thiện mã SQL bên dưới không, tôi đã quan sát thấy việc sử dụng trình lược tả SQL - thao tác đọc XML mất quá nhiều thời gian.

Vui lòng cho tôi biết làm cách nào để viết lại mã bên dưới để tôi có thể thấy hiệu suất được cải thiện.

Đây - edata là Cột XML Và mã bên dưới là một phần của thủ tục được lưu trữ chính của tôi, chỉ bên dưới mã có vấn đề về hiệu suất Và bảng erequest đã được lập chỉ mục

  KHAI BÁO @SFD BẢNG 
  ( 
     BIGINT, 
     eSố DECIMAL(12, 2), 
     eDate NGÀY
  ) 


CHÈN VÀO @SFD
CHỌN tr.etid,
        tr.edata.value('(EData/Số tiền)[1]', 'DECIMAL(12, 2)') eSố tiền,
        tr.edata.value('(EData/DrawDate)[1]','date') eDate
TỪ dbo.erequest tr
WHERE tr.accountid = @AccountId 

TRONG truy vấn trên - các dòng sau mất quá nhiều thời gian,

**tr.edata.value('(EData/Số tiền)[1]', 'DECIMAL(12, 2)') eSố tiền,
tr.edata.value('(EData/DrawDate)[1]','date') eDate**

Vui lòng tư vấn cho tôi, làm cách nào để viết lại các dòng trên trong truy vấn sql chính để tôi có thể thấy sự cải thiện về hiệu suất.

Vui lòng tìm truy vấn bên dưới để điền dữ liệu Bảng:

Tạo bảng erequest
(
BIGINT,
dữ liệu XML,
tài khoản INT
)

CHÈN VÀO GIÁ TRỊ erequest (etid,edata,accountid) (2145124897,
'<dữ liệu>
  <CardHolderName>ABCFDE</CardHolderName>
  <CardNumber>K6011</CardNumber>
  <Amount>555,17</Amount>
  <DrawDate>18-05-2022</DrawDate>
  <CurrencyCode>USD</CurrencyCode>
</edata>',10)

CHÈN VÀO GIÁ TRỊ erequest (etid,edata,accountid) (2145124897,
'<dữ liệu>
  <CardHolderName>ABCFDE</CardHolderName>
  <CardNumber>K6011</CardNumber>
  <Amount>555,17</Amount>
  <DrawDate>18-05-2022</DrawDate>
  <CurrencyCode>USD</CurrencyCode>
</edata>',20)

CHÈN VÀO GIÁ TRỊ erequest (etid,edata,accountid) (2145124897,
'<dữ liệu>
  <CardHolderName>ABCFDE</CardHolderName>
  <CardNumber>K6011</CardNumber>
  <Amount>555,17</Amount>
  <DrawDate>18-05-2022</DrawDate>
  <CurrencyCode>USD</CurrencyCode>
</edata>',30)

CHÈN VÀO GIÁ TRỊ erequest (etid,edata,accountid) (2145124897,
'<dữ liệu>
  <CardHolderName>ABCFDE</CardHolderName>
  <CardNumber>K6011</CardNumber>
  <Amount>555,17</Amount>
  <DrawDate>18-05-2022</DrawDate>
  <CurrencyCode>USD</CurrencyCode>
</edata>',12)

CHÈN VÀO GIÁ TRỊ erequest (etid,edata,accountid) (2145124897,
'<dữ liệu>
  <CardHolderName>ABCFDE</CardHolderName>
  <CardNumber>K6011</CardNumber>
  <Amount>555,17</Amount>
  <DrawDate>18-05-2022</DrawDate>
  <CurrencyCode>USD</CurrencyCode>
</edata>',16)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.