mysql使用——sql實現隨機取一條數據


最近在做接口測試的時候,測試數據是從數據庫查詢的,但是當需要並發多次去調用接口時,如果sql只是單純的進行了limit取值,那並發的時候肯定會每條數據都一樣。

因此,研究了下sql隨機取一條數據的寫法,從而用大量不同數據去進行並發的接口性能測試

原文:https://www.cnblogs.com/my_life/articles/7827233.html

三種方法:

(1)ORDER BY RAND()

寫法:SELECT * FROM 表A ORDER BY RAND() LIMIT 1

缺點:rand()放在ORDER BY 子句中會被執行多次,自然效率極低,mysql官方不提倡

(2)max(id) * rand()   +   join

寫法:select id from table 表A join (select round(rand()*(select max(id ) from table)) as idd) as 表B on 表A.id>表B.idd limit 1;

百度了很多,大佬們都認為采用JOIN的語法是最優的

(3)max(id) * rand()   

寫法:SELECT * FROM 表A  WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM 表A ) ORDER BY id LIMIT 1;

此種寫法的效率是介於前面兩種之間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM