gpt4 book ai didi

android - 如何减少从 SQLite 游标获取数据的时间?

转载 作者:行者123 更新时间:2023-11-29 01:49:23 25 4
gpt4 key购买 nike

我正在使用以下代码从 SQlite 获取数据,我在游标中很快得到了完美的数据。
当我迭代游标时,从游标中获取 31 条记录需要 >10 秒。
我的查询执行时间为 0.016150 秒。

我怎样才能将这个时间减少到 <1 秒?

Cursor cursor = dbHelper.getFollowedValuesForCalendar();

if(cursor!=null && cursor.getCount()>0)
{
cursor.moveToFirst();

int followedDateIndex = cursor.getColumnIndex(Info.FOLLOWED_DATE);
int followedCountIndex = cursor.getColumnIndex(Info.FOLLOWED_COUNT);
int successValueIndex = cursor.getColumnIndex(Info.SUCCESS_VALUE);
int isEnableIndex = cursor.getColumnIndex(Info.IS_ENABLE);
do
{
Info.previousFollowedDaysList.add(cursor.getString(followedDateIndex));
Info.previousFollowedValuesList.add(cursor.getInt(followedCountIndex));
Info.successValuesList.add(cursor.getInt(successValueIndex));
Info.isEnableList.add(cursor.getInt(isEnableIndex));
}while(cursor.moveToNext());
}
else
{
//System.out.println(" Records between dates ==============>>>> 0");
}

if(cursor!=null)
cursor.close();

最佳答案

你不应该在你的光标上不必要地调用 getCount(),因为它是一个昂贵的调用。阅读this .

相反,我建议您按如下方式更改代码:

Cursor cursor = dbHelper.getFollowedValuesForCalendar();

while(cursor != null && cursor.moveToNext()) {
int followedDateIndex = cursor.getColumnIndex(Info.FOLLOWED_DATE);
int followedCountIndex = cursor.getColumnIndex(Info.FOLLOWED_COUNT);
int successValueIndex = cursor.getColumnIndex(Info.SUCCESS_VALUE);
int isEnableIndex = cursor.getColumnIndex(Info.IS_ENABLE);

Info.previousFollowedDaysList.add(cursor.getString(followedDateIndex));
Info.previousFollowedValuesList.add(cursor.getInt(followedCountIndex));
Info.successValuesList.add(cursor.getInt(successValueIndex));
Info.isEnableList.add(cursor.getInt(isEnableIndex));
}

if(cursor!=null)
cursor.close();

此外,如果您已经知道列的索引,那么您可以简单地从 while 中取出 cursor.getColumnIndex 以进一步优化。

关于android - 如何减少从 SQLite 游标获取数据的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19221752/

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