0

在 Android 中,我在 sqlite 数据库中有超过 90,000 条记录,我想从中获取 4 个不同的随机行,但是任何人都可以帮助我,我们如何才能减少时间,因为它需要超过 5 个6秒在我的手机里

查询如下

   select * from Employee RANDOM LIMIT 4
4

1 回答 1

1

首先,您的查询实际上并不获取随机行,而是获取前四行,因为它是这样解释的,即“RANDOM”用作表别名:

select * from Employee as RANDOM LIMIT 4

要随机重新排序一组,您必须使用ORDER BY RANDOM(),如下所示:

SELECT * FROM Employee ORDER BY RANDOM() LIMIT 4

但是,这不是有效的(如您所见),因为它的返回值RANDOM()不可预测,因此无法优化。


为了更快地获取随机员工记录,您需要

  1. 一些整数 ID 列(假设您调用了它_id),以及
  2. 该列上的索引(这是为PRIMARY KEY列自动完成的)。

要获取四个随机记录,首先_id从数据库中获取最大值:

SELECT MAX(_id) FROM Employee

然后在代码中生成 1 和该值之间的四个随机整数,并执行以下快速查询:

SELECT * FROM Employee WHERE _id IN (?,?,?,?)

如果可以删除员工,则_id表中可能不存在某些值。在这种情况下,您必须创建一个新的随机数并重试另一条记录。

于 2013-10-15T07:51:38.233 回答