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

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

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

以下所有测试结果,为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 函数 开启多线程示例

from threading import Thread def readfile(queue:Queue):    &nbs...

python 获取当前时间及随机时间戳

import time from random import randint time.strftime('%Y-%m-%d %H:%M:...

python url.parse模块编码解码

from urllib.parse import quote,unquote,urlencode # 对汉字进行编码使用 quote ...

如何为精简的 CSS 文件删除未使用的 CSS

如何为精简的 CSS 文件删除未使用的 CSS

精简的网站比臃肿的网站运行得更快,这已经不是什么秘密了。不要让不必要的 CSS 拖累您的 Web 项目;使用下面描述的工具和技术来帮助您删除未使用的 CSS 并提高您网站的整体性能。什么是未使用的 C...

python下elasticsearch简单接口操作

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

发表评论

访客

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