關於資料庫的隨機查詢

2021-08-27 10:09:26 字數 796 閱讀 3865

隨機查詢資訊

select * from `table`

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

order by id limit 1;

最後,再把語句完善一下,加上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;

最後在php中對這兩個語句進行分別查詢10次,

前者花費時間 0.147433 秒

後者花費時間 0.015130 秒

看來採用join的語法比直接在where中使用函式效率還要高很多

關於LINQ中實現隨機查詢資料庫中記錄

傳統使用sql命令列方式 select top1 from customers order bynewid 隨機取出一條記錄,想取多條,則top n 當隨著linq時代的來代,這一切就有點不太好用了 按照傳統的思路,我們可以把linq查詢式寫為 var results from c indb.cus...

關於資料庫的遞迴查詢

1 oracle 以scott.emp表舉例 empno是人員編號,mgr是上級領導 也就是上級人員編碼 1 從上到下查詢 該查詢查詢員工jones下屬所有的員工 select emp.from emp start with ename jones connect by mgr prior empn...

關於ACCESS資料庫的模糊查詢

1 在access軟體中直接編寫sql語句要用 號 select from reportviewsetup where reportviewsetup.linkid like 20081016 and reportviewsetup.caseid 1197 order by reportviewse...