sqlite随机查询一组记录

2017-02-12  本文已影响0人  其时

方案一:

SELECT * FROM 表名 ORDER BY RANDOM() LIMIT 1

该方法需对所有记录进行一次排序,性能很差,1百万条记录时可能需几秒时间。


方案二:

SELECT * FROM 表名 WHERE rowid IN (一组随机的行ID)

该方法性能很好,rowid是sqlite表的一个隐藏字段。用程序获得一组行id,计算方法是在1到最大行id之间随机的获取,不过该方法有缺陷,因为rowid可能有空档,就是说,可能随机获取的行id没有对应的记录。

上一篇 下一篇

猜你喜欢

热点阅读