成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL使用rand 隨機查詢記錄效率測試

數據庫 MySQL
我們今天主要向大家描述的是MySQL使用rand 隨機查詢記錄效率測試,以及在其實際操作中值得我們大家注意的事項的描述。

以下的文章主要介紹的是MySQL使用rand 隨機查詢記錄效率測試,我們大家一直都以為MySQL數據庫隨機查詢的幾條數據,就用以下的東東,其實其實際效率是十分低的,以下就是文章的主要內容。

 

  1. SELECT * FROM `table` ORDER BY RAND() LIMIT 5  

就可以了。
但是真正測試一下才發現這樣效率非常低。一個15萬余條的庫,查詢5條數據,居然要8秒以上

查看官方手冊,也說rand()放在ORDER BY 子句中會被執行多次,自然效率及很低。

You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.

搜索Google,網上基本上都是查詢max(id) * rand()來隨機獲取數據。

 

  1. SELECT *   
  2. FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2  
  3. WHERE t1.id >= t2.id  
  4. ORDER BY t1.id ASC LIMIT 5;  

但是這樣會產生連續的5條記錄。解決辦法只能是每次查詢一條,查詢5次。即便如此也值得,因為15萬條的表,查詢只需要0.01秒不到。

上面的語句采用的是JOIN,MySQL的論壇上有人MySQL使用

 

  1. SELECT *   
  2. FROM `table`  
  3. WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` )  
  4. ORDER BY id LIMIT 1;  

我測試了一下,需要0.5秒,速度也不錯,但是跟上面的語句還是有很大差距。總覺有什么地方不正常。

于是我把語句改寫了一下。

 

  1. SELECT * FROM `table`  
  2. WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`)))  
  3. ORDER BY id LIMIT 1;  

這下,效率又提高了,查詢時間只有0.01秒

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

 

  1. SELECT * FROM `table`  
  2. WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))  
  3. ORDER BY id LIMIT 1;   
  4. SELECT *   
  5. 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  
  6. WHERE t1.id >= t2.id  
  7. ORDER BY t1.id LIMIT 1;   

 

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

前者花費時間 0.147433 秒

后者花費時間 0.015130 秒

看來采用JOIN的語法比直接在WHERE中使用函數效率還要高很多。以上的相關內容就是對MySQL使用rand隨機查詢記錄效率測試的介紹,望你能有所收獲。

【編輯推薦】

  1. MySQL移植問題的正確解決方案的描述
  2. MySQL mysqldump命令的正確應用
  3. 使用MySQL 數據庫出現的困難解決
  4. 實現MySQL 用戶密碼的設置步驟
  5. MySQL數據庫安全設置的操作流程
責任編輯:佚名 來源: cnblogs
相關推薦

2010-05-27 17:16:20

MySQL數據庫

2010-10-09 15:35:25

MySQL rand函

2010-04-23 16:35:02

Oracle 查詢記錄

2020-11-04 07:08:07

MySQL查詢效率

2010-09-06 17:40:59

SQL函數

2024-01-25 11:32:21

2011-07-27 17:22:10

mysql極限測試索引

2010-11-25 14:52:35

MySQL隨機查詢

2010-10-25 10:55:11

Oracle函數索引

2010-10-14 16:27:56

MySQL隨機查詢

2011-06-20 10:35:29

MySQL

2010-06-10 17:59:05

2012-07-06 09:00:34

MySQL

2015-07-17 16:23:14

MySQL優化

2010-11-25 14:05:15

MySQL查詢中間記錄

2011-06-28 08:32:40

MySQL慢查詢日志

2024-04-19 07:31:58

MySQL數據庫

2010-05-21 14:36:00

MySQL left

2010-11-25 15:43:02

MYSQL查詢重復記錄

2010-09-09 13:43:48

SQL函數NEWID
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产高清视频一区 | 亚洲免费视频在线观看 | 爱综合| www.五月婷婷.com | 91一区二区 | 亚洲性综合网 | 一区二区国产精品 | 中文字幕一区二区三区精彩视频 | 91偷拍精品一区二区三区 | 羞羞视频网 | 羞羞视频免费在线 | 天天射视频| a级片www | av男人的天堂av | 久久久国产一区二区三区 | 国产成年人小视频 | 亚洲成a人片 | 一区二区三区免费 | 亚洲精品在线观看视频 | 久久久精品久 | 日韩欧美国产精品一区二区 | 午夜精品 | 国产h视频 | 日日夜夜精品视频 | 国产自产c区 | 亚洲成人动漫在线观看 | 91久久精品日日躁夜夜躁国产 | 日本在线免费看最新的电影 | 亚洲网站在线观看 | 午夜激情视频在线 | 午夜精品一区 | 日本精品一区二区三区在线观看视频 | 亚洲综合色视频在线观看 | 成人不卡视频 | 欧美日韩在线一区二区 | 狠狠爱免费视频 | 一二区成人影院电影网 | 伊人春色在线观看 | 日韩精品一区二区三区中文字幕 | 亚洲最大看片网站 | 亚洲精品视频免费观看 |