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

最近在作接口測試的時候,測試數據是從數據庫查詢的,可是當須要併發屢次去調用接口時,若是sql只是單純的進行了limit取值,那併發的時候確定會每條數據都同樣。html

所以,研究了下sql隨機取一條數據的寫法,從而用大量不一樣數據去進行併發的接口性能測試mysql

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

三種方法:數據庫

(1)ORDER BY RAND()併發

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

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

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

寫法: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;blog

百度了不少,大佬們都認爲採用JOIN的語法是最優的接口

(3)max(id) * rand()   

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

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

相關文章
相關標籤/搜索