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

Tại sao MySQL không luôn sử dụng hợp nhất chỉ mục ở đây?

Ồ! Đó là cách "hợp nhất chỉ mục" phức tạp nhất mà tôi từng thấy.

Thông thường (có lẽ luôn luôn ), bạn có thể tạo chỉ mục 'tổng hợp' để thay thế chỉ mục-hợp nhất-giao nhau, và hoạt động tốt hơn . Thay đổi key2 chỉ từ (pinned) thành (pinned, DeviceId) . Điều này có thể thoát khỏi 'giao lộ' và tăng tốc độ.

Nói chung, Trình tối ưu hóa chỉ sử dụng hợp nhất chỉ mục trong lúc tuyệt vọng. (Tôi nghĩ đây là câu trả lời cho câu hỏi tiêu đề.) Bất kỳ thay đổi nhỏ nào đối với truy vấn hoặc các giá trị có liên quan và Trình tối ưu hóa sẽ thực hiện truy vấn mà không có hợp nhất chỉ mục.

Một cải tiến trên bảng tạm thời __codes là tạo một bảng cố định với một phạm vi giá trị lớn, sau đó sử dụng một loạt giá trị từ bảng đó bên trong Proc của bạn. Nếu bạn đang sử dụng MariaDB, thì hãy sử dụng bảng "trình tự" được tạo động. Ví dụ:'bảng' seq_1_to_100 hiệu quả một bảng một cột với các số 1..100. Không cần khai báo hoặc điền vào.

Bạn có thể loại bỏ REPEAT khác vòng lặp bằng điện toán thời gian từ Code .

Tránh LOOPs sẽ là lợi ích hiệu suất lớn nhất.

Hãy hoàn thành tất cả những điều đó, sau đó tôi có thể có những mẹo khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều gì sẽ xảy ra nếu tôi xóa ibdata1 trong mysql (LINUX)

  2. ngoại lệ mysql giá trị số nguyên không chính xác:'@column' cho cột từ ứng dụng web asp.net

  3. Tìm kiếm toàn văn bản MySql trong PHP bằng cách sử dụng chuỗi chứa từ khóa

  4. Laravel 4.2:Thời gian chờ MYSQL. Nơi để thay đổi thời gian toàn cầu

  5. Chỉ định lược đồ trong Pandas to_sql