当前位置:首页 > 日记本 > 正文内容

mysql随机调用高效率语句汇总

zhangchap2年前 (2022-01-21)日记本294

以下所有测试结果,为300w条真实数据,所占内存:  6.2 GB  。

  1. 常规的语句,速度最慢,数据量大的情况下,不建议使用:

SELECT * FROM `ask` order BY RAND() limit 0,500

查询花费40s +


2. (共 500 行, 查询花费 0.0367 秒。) 速度最快

SELECT * FROM ask WHERE Id >= ((SELECT MAX(Id) FROM ask)-(SELECT MIN(Id) FROM ask)) * RAND() + (SELECT MIN(Id) FROM ask)  LIMIT 500


3. (共 500 行, 查询花费 0.0060 秒。) 速度快,但是ID 连贯,非随机

SELECT * FROM ask AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(Id) FROM `ask`)-(SELECT MIN(Id) FROM ask))+(SELECT MIN(Id) FROM ask)) AS Id) AS t2 WHERE t1.Id >= t2.Id ORDER BY t1.Id LIMIT 500

4.  (共 500 行, 查询花费 0.2487 秒。)

SELECT * FROM `ask` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM  `ask`)-(SELECT MIN(id) FROM `ask`)) + (SELECT MIN(id) FROM  `ask`))) ORDER BY id LIMIT 500;

5.(共 500 行, 查询花费 0.2437 秒。)

SELECT * FROM `ask` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `ask`))) ORDER BY id LIMIT 500

6. (共 500 行, 查询花费 0.0381 秒。)

SELECT * FROM ask WHERE id >= ((SELECT MAX(id) FROM ask)-(SELECT MIN(id) FROM ask)) * RAND() + (SELECT MIN(id) FROM ask) limit 500;


分享给朋友:

相关文章

python使用mongodb数据库

from pymongo import MongoClient,collection class KSpdier(Thread):   ...

python xpath语法总结

python xpath语法总结:常用的://1.从任意节点开始/2.从根节点开始//div/p3.div下的p标签//div[@class="hrzz_bottom"]/ul/l...

python读取txt文件放到Queue队列

from queue import Queue with open('kw.txt',encoding='utf-8')&nb...

python fake_useragent 模块用法

我们每次发送requests请求时通过random从中随机获取一个随机UserAgent,两行代码即可完成UserAgent的不停更换 from fake_useragent i...

python提高运行速度numba.jit

使用numba.jit。 numba可以将 Python 函数 JIT 编译为机器码执行,大大提高代码运行速度。import time def computeSum(size:&...

python下elasticsearch简单接口操作

# -*- coding:utf-8 -*- # elasticsearch 默认算法bm25 from elasticsearch&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。