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

Tối ưu hóa truy vấn mysql của tôi để sử dụng chỉ mục để sắp xếp

Tôi tin rằng truy vấn bạn có có thể khớp với một tỷ lệ phần trăm lớn dữ liệu trong bảng. Trong những tình huống như vậy, trình tối ưu hóa MySQL thường chọn quét bảng và bỏ qua hoàn toàn các chỉ mục, vì nó thực sự nhanh hơn so với việc đọc thêm toàn bộ chỉ mục và sử dụng nó để chọn dữ liệu. Vì vậy, trong trường hợp này, tôi đoán rằng public_private='yes' and approved='yes' phù hợp với một phần tốt của bảng của bạn. Do đó, nếu MySQL bỏ qua việc sử dụng chỉ mục vì lý do này, thì nó cũng không có sẵn để sắp xếp.

Nếu bạn thực sự muốn nó sử dụng một chỉ mục, thì giải pháp sẽ là sử dụng FORCE INDEX :

select * from videos FORCE INDEX (approved_2) where public_private='public' and approved='yes' order by number_of_views desc;

Tuy nhiên, tôi sẽ chạy một số thử nghiệm để đảm bảo rằng những gì bạn nhận được thực sự nhanh hơn những gì mà trình tối ưu hóa MySQL đã chọn làm. Rõ ràng là trình tối ưu hóa có một số vấn đề với việc đưa ra các lựa chọn để đặt hàng, vì vậy bạn chắc chắn có thể thử điều này và xem liệu bạn có cải thiện được hiệu suất hay 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. Nối hai bảng tương tự trong MySQL

  2. Làm thế nào để lưu trữ một số 128 bit trong một cột duy nhất trong MySQL?

  3. Không thể khởi động máy chủ trong đường ray với mysql db

  4. varchar (255) v tinyblob v tinytext

  5. dấu ngoặc kép trong Truy vấn SQL