【发布时间】:2010-03-04 23:18:02
【问题描述】:
$offset = SELECT FLOOR(RAND() * COUNT(*)) FROM t_table
SELECT * FROM t_table WHERE LIMIT $offset,1
这在 myisam 中效果很好,但我想将此表更改为 innodb(所有其他数据库表都是 innodb)以利用外键并避免使用表级别锁定。
这个表的primaryId字段是一个VARCHAR(10)
我不能“强制”使用数字 autoinc Id,因为记录会一直被删除/添加,并且 RANDOM(MIN(Id), MAX(Id)) 预测可能会多次错过行。
如何优化这个查询到 innodb?
提前致谢!
亚瑟
【问题讨论】:
标签: mysql optimization