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

Vấn đề hiệu suất và giải pháp mysql order by rand ()

Đầu tiên, tất cả tạo một giá trị ngẫu nhiên từ 1 đến MAX (id), không phải 100000000.

Sau đó, có ít nhất một vài giải pháp tốt:

  1. Sử dụng > không phải =

    SELECT items FROM tablea where status='0' and id>'$id23' LIMIT 1
    

    Tạo chỉ mục trên (status,id,items) để đặt đây là một truy vấn chỉ lập chỉ mục.

  2. Sử dụng = , nhưng chỉ cần thử lại với một giá trị ngẫu nhiên khác nếu bạn không tìm thấy lần truy cập. Đôi khi sẽ mất vài lần thử, nhưng thường thì chỉ cần một lần thử. = sẽ nhanh hơn vì nó có thể sử dụng khóa chính. Và nếu nó nhanh hơn và đạt được nó trong một lần thử 90% thời gian, thì điều đó có thể bù đắp cho 10% thời gian còn lại khi bạn phải thử nhiều hơn một lần. Phụ thuộc vào việc bạn có bao nhiêu khoảng trống trong các giá trị id của mì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. Tôi có đang sử dụng tổng hợp kết nối JDBC không?

  2. Cách kiểm tra xem cơ sở dữ liệu mysql có tồn tại hay không

  3. Có thể chèn dữ liệu vào hai bảng khác nhau trong mysql bằng một php truy vấn chèn không?

  4. tải xuống các giá trị của bảng sql để sử dụng lại ngoại tuyến

  5. làm cách nào để chèn nhiều giá trị trong mysql và tránh trùng lặp