方法一

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;

最新文章

  1. 关于Gridview的列名问题
  2. javascript url几种编码方式
  3. (转载)【Android】ViewGroup全面分析
  4. Metronic_下拉列表Select2插件的使用
  5. Centos7关闭防火墙与selinux
  6. 4,帮助命令man
  7. SourceGrid zt
  8. 怎样给filter加入自己定义接口及调用
  9. Solr4.8.0源码分析(22)之SolrCloud的Recovery策略(三)
  10. python列表推导和字典推导
  11. VC++ win32 多线程 一边画圆一边画矩形
  12. fastdfs storage server的设计与实现
  13. android怎么打开wifi的组播功能
  14. 使用vlmcsd自建KMS服务~一句命令激活windows/office
  15. 怎么去掉javascript 的Array的重复项
  16. docker网络
  17. makefile笔记9 - makefile隐含规则
  18. edfread源码
  19. MySQL技术内幕读书笔记(三)——文件
  20. python构建bp神经网络_鸢尾花分类(一个隐藏层)__1.数据集

热门文章

  1. SpringMVC是单例的
  2. 多线程中的join总结笔记
  3. sql中优化查询
  4. VC中BSTR、Char和CString类型的转换
  5. Chrome 不能访问tensorboard解决
  6. 吴裕雄 08-MySQL创建数据表
  7. 有关于分布式和SOA的理解
  8. ajax 执行代码顺序
  9. 在maven中classpath notfund
  10. Unity&UGUI