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

Cách tối ưu hóa tính toán khoảng cách Levenshtein này

Tôi giả định rằng levenshtein_ratio là một hàm mà bạn đã viết (hoặc có thể được đưa vào từ một nơi khác). Nếu vậy, máy chủ cơ sở dữ liệu sẽ không thể tối ưu hóa điều đó theo nghĩa thông thường của việc sử dụng một chỉ mục. Vì vậy, nó có nghĩa là nó chỉ cần gọi nó cho mỗi bản ghi là kết quả của các điều kiện nối khác. Với một phép nối bên trong, đó có thể là một con số cực kỳ lớn với các kích thước bảng đó (tối đa là 8000 * 250000 =2 tỷ). Bạn có thể kiểm tra tổng số lần nó sẽ cần được gọi với điều này:

SELECT
      count(*)
   FROM
      library a,
      classifications b
   WHERE  
      a.`release_year` = b.`year`
      AND a.`id` IS NULL

Đó là lời giải thích tại sao nó chậm (không thực sự là câu trả lời cho câu hỏi làm thế nào để tối ưu hóa nó). Để tối ưu hóa nó, bạn có thể cần thêm các yếu tố giới hạn bổ sung vào điều kiện kết hợp để giảm số lượng lệnh gọi đến hàm do người dùng xác định.



  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 để chọn từ cột DATETIME chỉ sử dụng ngày?

  2. Tôi có thể thực hiện tăng nguyên tử trong Rails 2.3 mà không giảm xuống SQL không?

  3. Làm thế nào để tìm tất cả các mối quan hệ giữa tất cả các bảng mysql?

  4. Cập nhật và tăng nhiều cột trên bản sao

  5. Không có bản ghi MySQL nào trả về khi vượt qua một giới hạn nhất định?