欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
mysql使用rand隨機查詢(xún)記錄效率測試

mysql使用rand隨機查詢(xún)記錄效率測試

8 八月, 2007 (18:40) | mysql | By: admin

一直以為mysql隨機查詢(xún)幾條數據,就用

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

就可以了。
但是真正測試一下才發(fā)現這樣效率非常低。一個(gè)15萬(wàn)余條的庫,查詢(xún)5條數據,居然要8秒以上

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

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


搜索Google,網(wǎng)上基本上都是查詢(xún)max(id) * rand()來(lái)隨機獲取數據。

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

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

上面的語(yǔ)句采用的是JOIN,mysql的論壇上有人使用

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

我測試了一下,需要0.5秒,速度也不錯,但是跟上面的語(yǔ)句還是有很大差距??傆X(jué)有什么地方不正常。

于是我把語(yǔ)句改寫(xiě)了一下。

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

這下,效率又提高了,查詢(xún)時(shí)間只有0.01秒

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

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中對這兩個(gè)語(yǔ)句進(jìn)行分別查詢(xún)10次,
前者花費時(shí)間 0.147433 秒
后者花費時(shí)間 0.015130 秒
看來(lái)采用JOIN的語(yǔ)法比直接在WHERE中使用函數效率還要高很多。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MySQL實(shí)現表中取出隨機數據
MySQL常用查詢(xún)
Mysql數據庫百萬(wàn)級記錄查詢(xún)分頁(yè)優(yōu)化
35張圖釋放MySQL調優(yōu)的最強連招,我先肝為敬
mysql隨機抽取數據
mysql隨機獲取一條或者多條數據
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久