在 Android 中,我在 sqlite 数据库中有超过 90,000 条记录,我想从中获取 4 个不同的随机行,但是任何人都可以帮助我,我们如何才能减少时间,因为它需要超过 5 个6秒在我的手机里
查询如下
select * from Employee RANDOM LIMIT 4
在 Android 中,我在 sqlite 数据库中有超过 90,000 条记录,我想从中获取 4 个不同的随机行,但是任何人都可以帮助我,我们如何才能减少时间,因为它需要超过 5 个6秒在我的手机里
查询如下
select * from Employee RANDOM LIMIT 4
首先,您的查询实际上并不获取随机行,而是获取前四行,因为它是这样解释的,即“RANDOM”用作表别名:
select * from Employee as RANDOM LIMIT 4
要随机重新排序一组,您必须使用ORDER BY RANDOM()
,如下所示:
SELECT * FROM Employee ORDER BY RANDOM() LIMIT 4
但是,这不是有效的(如您所见),因为它的返回值RANDOM()
不可预测,因此无法优化。
为了更快地获取随机员工记录,您需要
_id
),以及PRIMARY KEY
列自动完成的)。要获取四个随机记录,首先_id
从数据库中获取最大值:
SELECT MAX(_id) FROM Employee
然后在代码中生成 1 和该值之间的四个随机整数,并执行以下快速查询:
SELECT * FROM Employee WHERE _id IN (?,?,?,?)
如果可以删除员工,则_id
表中可能不存在某些值。在这种情况下,您必须创建一个新的随机数并重试另一条记录。