$offset = SELECT FLOOR(RAND() * COUNT(*)) FROM t_table
SELECT * FROM t_table WHERE LIMIT $offset,1
这的MyISAM的伟大工程,但我想这个表更改为InnoDB的(所有其他数据库表是InnoDB的)拿外国键的优点,避免表级别锁定。随机行查询优化
此表的primaryId字段是VARCHAR(10)
我不能“强制”数字AUTOINC标识,因为记录被删除/添加了所有的时间和随机(MIN(ID) MAX(Id))预测可能会错过很多次。
我该如何优化这个查询到innodb?
在此先感谢!
Arthur
这是我第一次尝试,但表变得更大,我不得不用问题上的查询替换它 – arthurprs 2010-03-04 23:23:26