您的位置:首页 > 数据库 > MySQL

在MySQL中用SQL语句取随机记录

2013-03-29 16:07 423 查看
表总的数据量

select count(*) from obj_track_20130304 ; --4320000条


1.

select * from obj_track_20130304 order by rand() limit 5;


--查询时间12.328s

2.

SELECT *
FROM obj_track_20130304 AS t1
JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM obj_track_20130304)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;


--查询时间0.528s

3.

SELECT *
FROM obj_track_20130304
WHERE id>=(SELECT FLOOR(RAND()*(SELECT MAX(id) FROM obj_track_20130304)))
ORDER BY ID LIMIT 5;


--查询时间0.015s

1,2,3比较,不同的SQL语句查询效率差别很大。

PS:
rand()是产生的随机数;floor()是不大于指定数的最大整数.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: