gpt4 book ai didi

android - 如何使 SQLite 选择查询更快

转载 作者:行者123 更新时间:2023-11-29 16:06:15 25 4
gpt4 key购买 nike

你好,我是 SQLite 的新手,我正在尝试处理项目中的一些数据库操作。

我有一个包含将近 4000 行的表格,这是每一行的格式:

problem_id (string)
problem_no (string)
problem_title (string)
dacu (int)

我需要根据problem_id查询一堆problem_no。查询量一次差不多1000个。所以我写了一个这样的查询代码:

Set<Integer> getProblemsTitle(HashSet<String> problemsIDs) {
SQLiteDatabase db = this.getReadableDatabase();
HashSet<Integer> problemNo = new HashSet<Integer>();
Cursor cursor = null;
for (Iterator<String> iterator = problemsIDs.iterator(); iterator.hasNext();) {
cursor = db.query(CommonUtils.PROBLEM_TABLE, new String[] {
CommonUtils.KEY_PROBLEM_NO },
CommonUtils.KEY_PROBLEM_ID + "=?",
new String[] { iterator.next() }, null, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
problemNo.add(cursor.getInt(0));
}
cursor.close();
}
db.close();
Set<Integer> set = new TreeSet<Integer>(problemNo);
return set;
}

我知道这不是优化的 fragment 。而且我需要大量优化它以减少查询的执行时间。我在 AsyncTask 中完成了它,但它花费了太多时间。

我怎样才能以更快的性能有效地做到这一点?

最佳答案

您可能要考虑将其从数据库中取出。如果您只是捕获了所有问题,则可以将它们全部添加到代码中。运行一个包含 4000 个结果的 SELECT 仍然比一千个 SELECT 语句快很多

方法是将它们全部抓取,但进行排序(ORDER BY problem_id)。然后,您只需对照它检查 problemIDs 中的每个项目,并在找到匹配项时添加。

您还可以使用 IN 运算符作为 Mathew suggests , 但是 I don't know how efficient that will be集合中有 1000 个项目。

关于android - 如何使 SQLite 选择查询更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18081581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com