select * from name where table= '2018' order by rand() LIMIT 1这个执行效率太慢了。。 还有没有其他的方法可以实现初学,别的研究都不成功。

解决方案 »

  1.   

    https://mariadb.com/kb/en/library/data-sampling-techniques-for-efficiently-finding-a-random-row/
      

  2.   

    SELECT * FROM name  WHERE id>= ((SELECT MAX(id) FROM name  )-(SELECT MIN(id) FROM users)) * RAND() + (SELECT MIN(table) FROM name  )  LIMIT 1 
    and table= '2018' 
      

  3.   

    https://www.cnblogs.com/leezhxing/p/3951801.html
      

  4.   

    不知道是哪位人才发明的order by rand(),如果不想被同事打,这玩意儿还是忘了