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

Cấu hình chỉ mục Mysql

Cập nhật:

Xem bài viết này trong blog của tôi để biết phân tích chi tiết hơn về vấn đề:

Khi bạn phát hành một cái gì đó như LIMIT 150000, 10 , có nghĩa là MySQL nên xem qua 150,000 này ghi lại và tìm 10 tiếp theo .

Duyệt qua chỉ mục chậm trong MySQL .

Ngoài ra, MySQL không có khả năng thực hiện tra cứu hàng muộn.

Về mặt lý thuyết, nếu bạn thực hiện ORDER BY id LIMIT 100000, 10 , chỉ cần sử dụng chỉ mục để tìm các giá trị từ 100000 là đủ thành 100010 , sau đó chỉ tra cứu 10 các hàng thỏa mãn chỉ mục đó và trả về chúng.

Tất cả các hệ thống chính ngoại trừ MySQL nhận thức được điều đó và chỉ tra cứu các hàng nếu các giá trị thực sự được trả về.

MySQL tuy nhiên, hãy tra cứu mọi hàng.

Cố gắng viết lại truy vấn của bạn như sau:

SELECT  news.*
FROM    (
        SELECT  id
        FROM    news
        WHERE   cat_id='4'
        ORDER BY
                id DESC
        LIMIT 150000, 10
        ) o
JOIN    news
ON      news.id = o.id



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt hàng SQL bằng LIKE mạnh nhất?

  2. Mảng PDO SHOW TABLES

  3. Làm thế nào để lưu trữ một mảng vào mysql?

  4. Đếm tất cả các bản ghi không tồn tại trong bảng khác - Truy vấn SQL

  5. Làm cách nào để giới hạn số hàng cho mỗi giá trị trường trong SQL?