随机获取数据的业务场景,想必大家都有遇到过,今天我们分析一下如何正确的显示随机消息.
mysql> CREATE TABLE `words` (
`id` int(11) NOT NULL AUTO_INCREMENT...上图我们发现sort_buffer中的位置信息,是个什么概念呢,而Mysql是如何定位一行数据的呢,
首先我们知道mysql中有以下规则
对于有主键的innodb表来说,rowid就是我们的主键
对于没有主键的...select * from t where id >= @X limit 1;
虽然上面可以获取一个数,但是他并不是一个随机数,因为如何表中的id可能存在空洞,导致每一行的获取概率并不一样,如id=1,2,4,5...,而id=4获取的id概率是其他行的两倍。...现在如果要获取三个随机数,根据随机算法2的思路
获取整张表的总行数C
根据同样的共识获取Y1,Y2,Y3
再执行limit Y,1.获取三个随机数
对应的sql语句如下
mysql> select