Mysql取隨機數據效率測試(200W條中讀取100條)

第一種方案:sql

 

SELECT * 
FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`))+
(SELECT MIN(record_id) FROM `follow_record`)) AS record_id) AS t2 
WHERE t1.record_id >= t2.record_id 
ORDER BY t1.record_id LIMIT 100;

 

加條件:工具

 

SELECT COUNT(record_id) FROM `follow_record` WHERE  record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"

 

SELECT *
FROM `follow_record` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`))+
(SELECT MIN(record_id) FROM `follow_record` where record_addtime>="2019-03-01 21:29:20")) AS record_id) AS t2
WHERE t1.record_id >= t2.record_id AND record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"
ORDER BY t1.record_id LIMIT 100;  

 

 

 在Mysql工具中測試結果是0.01-0.03sec。測試

 

第二種方案:spa

 

SELECT * FROM `follow_record` 
WHERE record_id >= (SELECT floor(RAND() * (SELECT MAX(record_id) FROM `follow_record`)))  
ORDER BY record_id LIMIT 100;

 

SELECT * FROM `follow_record` 
WHERE record_id >= (SELECT floor(RAND() * (SELECT MAX(record_id) FROM `follow_record`)))  AND record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"
ORDER BY record_id LIMIT 100;

 

  在Mysql工具中測試結果是0.04-0.05sec。code

 

第三種方案:blog

 

SELECT * FROM `follow_record` 
WHERE record_id >= (SELECT floor( RAND() * ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`)) + 
(SELECT MIN(record_id) FROM `follow_record`)))  
ORDER BY record_id LIMIT 100;

 

SELECT * FROM `follow_record`
WHERE record_id >= (SELECT floor( RAND() * ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`)) +
(SELECT MIN(record_id) FROM `follow_record`))) AND record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"
ORDER BY record_id LIMIT 100;

 

   在Mysql工具中測試結果是0.04-0.05sec。it

 

第四種方案:class

 

SELECT * FROM `follow_record` 
WHERE record_id >= ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`)) * RAND() + 
(SELECT MIN(record_id) FROM `follow_record`) 
limit 100;

 

SELECT * FROM `follow_record`
WHERE record_id >= ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`)) * RAND() +
(SELECT MIN(record_id) FROM `follow_record`) AND record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"
limit 100;

 

UPDATE `follow_record` SET record_addtime="2019-04-04 21:29:20" WHERE  record_id in ( SELECT F.record_id FROM (SELECT record_id FROM `follow_record`
WHERE record_id >= ((SELECT MAX(record_id) FROM `follow_record`)-(SELECT MIN(record_id) FROM `follow_record`)) * RAND() +
(SELECT MIN(record_id) FROM `follow_record`) AND record_addtime>="2019-02-01 21:29:20" AND record_gs="布拖縣"
limit 10) F)

 

    在Mysql工具中測試結果是0.02-0.04sec。im

在線測試從170萬條數據中,隨機提取2000條並修改相應字段d3


相關文章
相關標籤/搜索