博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySql 巧用 rand( )获取随机记录
阅读量:6675 次
发布时间:2019-06-25

本文共 787 字,大约阅读时间需要 2 分钟。

hot3.png

在 MySql 中产生随机数的方法是 rand( ) 函数。可以利用这个函数与 order by 一起完成随机抽取某些行的功能

mysql> select count(1) from sys_log;+----------+| count(1) |+----------+|    69177 |+----------+//获取十条随机数据select * from sys_log order by RAND() limit 10;10 rows in set (1.47 sec)

当数据表内容过多的时候上面的查询会比较耗时,可以进一步优化

select a.* from sys_log a   inner join(select id from sys_log order by RAND() limit 10) b on a.id=b.id;10 rows in set (0.34 sec)

有些人可能会错把 inner join 写成 left join ,这两者的执行效率是有区别的

select a.* from sys_log a   left join(select id from sys_log order by RAND() limit 10) b on a.id=b.id;10 rows in set (2.58 sec)

left join在任何场景下都不会比inner join的执行效率高 因为left join除了需要所有inner join的结果集以外还需要左表的所有没有关联上的数据。

left join除了要求关联字段有索引以外,最好将小表作为左表,因为检索的循环次数更少,前提是你的业务逻辑没问题,因为不同的写法逻辑是不一样的

转载于:https://my.oschina.net/u/3387320/blog/3014115

你可能感兴趣的文章
零基础学习SVN之(三):可视化SVN的使用
查看>>
IOS开发之显示微博表情
查看>>
Snap首份季度财报或让投资人失望 股价被指偏高
查看>>
新来的NB-IoT为什么这么NB?
查看>>
DoCoMo跳过HSPA+ 力争全球首家推出LTE商用服务
查看>>
Mozilla火狐发布最新计划:用户隐私和安全为发展核心
查看>>
金融行业解决方案
查看>>
[原创]分析解决lvs fullnat模式下后端服务器获取真实IP地址异常问题
查看>>
《Arduino开发实战指南:LabVIEW卷》——3.3 LabVIEW的常用工具及调试工具
查看>>
中国正式启动5G技术研发试验:力争2020年商用
查看>>
《精解 Windows 10》——第2章 Modern 2.0界面体验 2.1Modern 2.0界面
查看>>
《Android深度探索(卷1):HAL与驱动开发》——1.5节如何学习Linux驱动开发
查看>>
《Photoshop七大核心技术》—第2课Photoshop七大核心技术
查看>>
《动手玩转Arduino》——10.5 展望
查看>>
大数据开发套件-数据集成-云mongo跨区域如何同步到Maxcompute
查看>>
人工智能第三次黄金时代,藏在全球数亿摄像头里?
查看>>
RegularJS 0.2.12 发布,JavaScript MVC 框架
查看>>
根据《网络安全法》要求全面提升企业安全能力
查看>>
最新 Win10 测试版提供 Ubuntu 16.04 镜像
查看>>
云栖大会|新零售时代供应链的重“构”已经开始
查看>>