Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thay thế để sử dụng WHERE ... IN (...) cho các truy vấn SQL chậm

Chỉ để cười khúc khích một lần nữa, bạn có thể thử truy vấn này không:

  select 
    [sID], 
    ROW_NUMBER() over (partition by [sID] order by [wordPos]) [rn], 
    [wordPos], [FTSindex].[wordID]
  from [FTSindex] 
  join ( 
    values (428), (2112)
  ) w (wordID) on w.wordID = [FTSindex].wordID
  order by [sID], [rn] 

Đôi khi, ném nhiều phần cứng hơn vào vấn đề là câu trả lời chính xác; mặc dù tôi đồng ý rằng đây nên là phương sách cuối cùng chứ không phải là phương án đầu tiên. Việc vấn đề cụ thể này có yêu cầu nhiều CPU hơn, nhiều bộ nhớ hơn hay nhiều trục xoay hơn hay không phụ thuộc vào nhiều yếu tố, bao gồm cả phần cứng hiện tại của bạn.

Tập hợp kết quả của bạn gồm 1,6 triệu hàng, mỗi hàng 4 số nguyên, sẽ được sắp xếp nhanh chóng trên bất kỳ lượng phần cứng hiện tại hợp lý nào. Vì sự chậm trễ đang xảy ra nên có vẻ như quá nhiều quá trình xử lý đang xảy ra trên tập hợp cơ sở gồm 900 triệu hàng và thách thức là xác định lý do tại sao. Bạn có thể đính kèm thêm chi tiết về kế hoạch truy vấn không?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thêm các thuộc tính tùy chỉnh vào chuỗi kết nối SQL?

  2. Làm cách nào để tạo một ràng buộc duy nhất chỉ vào phần ngày của ngày giờ?

  3. TSQL Thử / Bắt trong Giao dịch hay ngược lại?

  4. Triển khai Cơ sở dữ liệu đầu tiên của Entity Framework Code

  5. ràng buộc duy nhất có điều kiện