mysql隨機取資料的幾種高效率方法

2021-09-02 04:01:32 字數 1014 閱讀 6719

介紹高效的mysql隨機資料的方法:

1]普通方法, 效率太低

**如下

複製**

select * from table order by rand() limit 10;

[2] join的方法:

**如下

複製**

select * 

from `table` as t1 join (select round(rand() * ((select max(id) from `table`) – (select min(id) from `table`)) + (select min(id) from `table`)) as id) as t2 

where t1.id >= t2.id 

order by t1.id limit 10;

再把語句完善一下,加上min(id)的判斷。我在最開始測試的時候,就是因為沒有加上min(id)的判斷,結果有一半的時間總是查詢到表中的前面幾行。

完整查詢語句是:

**如下

複製**

select * from `table`

where id >= (select floor( rand() * ((select max(id) from `table`)-(select min(id) from `table`)) + (select min(id) from `table`)))

order by id limit 1;

select *

from `table` as t1 join (select round(rand() * ((select max(id) from `table`)-(select min(id) from `table`))+(select min(id) from `table`)) as id) as t2

where t1.id >= t2.id

order by t1.id limit 1;

前者花費時間 0.147433 秒

後者花費時間 0.015130 秒

MySQL隨機取資料最高效率的方法

發現在sql語句裡有乙個 order by rand 這樣的乙個語句,這個說是用著方便,但是效率實在是太低了,於是我用了以下的方法來優化,就是用join表的方法來達到這個取隨機資料行的方法,你可以用 explain sql語句來分析一下以下兩條sql語句的效率,當然,資料量至少上10萬以上才能看出效...

mysql 取隨機編號 mysql取隨機資料的方法

先看手冊中的sql select from table name order by rand limit 5 描述 rand rand n 返回在範圍0到1.0內的隨機浮點值。如果乙個整數引數n被指定,它被用作種子值。mysql select rand 0.5925 mysql select ran...

高效的MySql 隨機讀取資料

一直以為mysql隨機查詢幾條資料,就用 select from table order byrand limit 5但是真正測試一下才發現這樣效率非常低。乙個15萬餘條的庫,查詢5條資料,居然要8秒以上 檢視官方手冊,也說rand 放在order by 子句中會被執行多次,自然效率及很低。you ...