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

Tại sao MySQL trả về cùng một kết quả trong khi sử dụng RAND () trong câu lệnh SELECT?

Hạt giống Rand ()

MySQL sử dụng đồng hồ hệ thống để khởi tạo RAND() khi không có giá trị thứ hai. Giá trị khởi đầu tính bằng micro giây và tôi không thể tạo lại sự cố của RAND() tạo ra cùng một giá trị hai lần như bạn mô tả.

Nếu bạn mở MySQL Workbench và thực thi hai câu lệnh cùng một lúc. Đầu ra khác nhau đối với mỗi loại.

SELECT RAND();
SELECT RAND();

Khi bạn mở nhiều tab và nhận được kết quả giống nhau. Đây có thể là sự cố bộ nhớ đệm, nhưng bạn cho biết bạn đang đóng dấu URL để ngăn bộ nhớ đệm. Vì vậy, hãy bật ghi nhật ký SQL trên máy chủ và xác minh rằng các truy vấn mới đang được gọi.

Hiệu suất Rand ()

ORDER BY RAND() chậm vì nó yêu cầu MySQL đọc toàn bộ bảng. Chẵn ORDER BY RAND() LIMIT 1 vẫn yêu cầu MySQL để đọc toàn bộ bảng.

CẬP NHẬT:

Bạn có thể xem giá trị ngẫu nhiên mà SQL đang tạo là gì.

$query = "SELECT *, RAND() AS `X`
          FROM customers
          WHERE customer_group='consumables' AND customer_updated < DATE_SUB(NOW(), INTERVAL 1 DAY)
          ORDER BY `X`
          LIMIT 10";

Điều đó sẽ bao gồm cột X Cho mỗi hàng. Giá trị ngẫu nhiên được sử dụng để sắp xếp truy vấn. Thêm phần này vào đầu ra và xem liệu mỗi trình duyệt có thực sự trả về cùng một bộ kết quả từ MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Symfony2 - Doctrine2 QueryBuilder Ở đâu trong trường ManyToMany

  2. Làm cách nào để chuyển đổi MySQL DB sang XML?

  3. Bảng Laravel Migration đã tồn tại, nhưng tôi muốn thêm mới chứ không phải cũ hơn

  4. Các ký tự tiếng Thổ Nhĩ Kỳ không được hiển thị chính xác

  5. Kiểu dữ liệu mảng, chuỗi phân tách,