MYSQL:在一千万条数据里面随机查找一条数据(要求查找时间小于0.1秒)_百...
先在php中随机函数rand()获得一个1到一千万的数字,select 字段 from where 自增字段名=数字 limit 1。或者 select 字段 from 表名 order by rand() limit 1 关键都是 limit 1,这是告诉mysql查获一条记录后,不再继续查找其他符合条件的记录。
要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。
对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
通过MYSQL内置的函数来操作,具体SQL代码如下:SELECT * FROM tablename ORDER BY RAND() LIMIT 10 不要将大量的工作给数据库去做,这样会导致数据库在某一集中并发时间内锁死并阻塞。