Mysql的随机抽取
2024-09-17 09:43:13
方法一
SELECT * FROM SHARE ORDER BY RAND( ) LIMIT 1;
在MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。
但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。
但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。
方法二
SELECT * FROM SHARE AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(s_id) FROM SHARE)) AS s_id) AS t2
WHERE t1.s_id >= t2.s_id
ORDER BY t1.s_id ASC LIMIT 1;
最新文章
- 关于Gridview的列名问题
- javascript url几种编码方式
- (转载)【Android】ViewGroup全面分析
- Metronic_下拉列表Select2插件的使用
- Centos7关闭防火墙与selinux
- 4,帮助命令man
- SourceGrid zt
- 怎样给filter加入自己定义接口及调用
- Solr4.8.0源码分析(22)之SolrCloud的Recovery策略(三)
- python列表推导和字典推导
- VC++ win32 多线程 一边画圆一边画矩形
- fastdfs storage server的设计与实现
- android怎么打开wifi的组播功能
- 使用vlmcsd自建KMS服务~一句命令激活windows/office
- 怎么去掉javascript 的Array的重复项
- docker网络
- makefile笔记9 - makefile隐含规则
- edfread源码
- MySQL技术内幕读书笔记(三)——文件
- python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集