关于添加100万联系人查询插入的问题

lonelyhacker 2018-04-27 05:00:11
大家好!

问题1:SQLITE: 如果在联系人列表中添加100万个联系人,应该如何提升数据库插入和查询所有联系人的速度呢???
问题2:用于显示联系人的ListView,又应该如何加载所有数据显示呢??(要求必须全部加载显示)


String str;
sqLiteDatabase.beginTransaction();
try
{
for (int i = 0; i < 1000000; i++)
{
str = "张" + Integer.toString(i + 1);
contactsDB.AddContactsData(sqLiteDatabase, str, str, str, str, str, str);
listContact.add(new Person(str,str,str,str,str,str));
}
sqLiteDatabase.setTransactionSuccessful();
}
catch (Exception e)
{
throw e;
}finally {
sqLiteDatabase.endTransaction();
}


上面是通过事务来添加的,但是时间上还是很慢。 50万联系人需要4分钟左右。
...全文
609 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lonelyhacker 2018-04-28
  • 打赏
  • 举报
回复
引用 2 楼 xj396282771 的回复:
这么多数据肯定不能一次性加载,首先可以参考https://blog.csdn.net/liuhe688/article/details/6852523做一个ListView分页加载的功能,数据加载就得你自己写查询语句了,每次查询的条数,你也可以这个链接来做,查询的关键在于你从第n条数据查询到第m条数据的一个逻辑,相当于一个分页查询的感觉
谢谢你的回答。假设字母排序,我点击F字母,如何在数据库中快速到定位到F字段呢?
Jing丶無雙 2018-04-28
  • 打赏
  • 举报
回复
这么多数据肯定不能一次性加载,首先可以参考https://blog.csdn.net/liuhe688/article/details/6852523做一个ListView分页加载的功能,数据加载就得你自己写查询语句了,每次查询的条数,你也可以这个链接来做,查询的关键在于你从第n条数据查询到第m条数据的一个逻辑,相当于一个分页查询的感觉
lonelyhacker 2018-04-28
  • 打赏
  • 举报
回复
引用 5 楼 Mailbomb 的回复:
这个建议第一要分多个SQLite库文件,例如按照首字母分别存入不同的库文件,避免库文件过大,影响读写速度。 插入时如果是一次插入一条没啥好办法,如果是一次插入多条,建议使用事务,可以大幅提高写入效率。 读取的时候不建议一次加载完成,建议分批加载,例如每次加载10个那种的上拉刷新方式。
好的,谢谢你的建议。
lonelyhacker 2018-04-28
  • 打赏
  • 举报
回复
引用 4 楼 xj396282771 的回复:
可以这样你开始存入你的数据库的时候就多一个字段capital,这样你就得在存入数据库前每次都去判断一下联系人姓名第一个字的首写字母是什么,根据文字获取其首写字母这样的方法网上是有的。最终查询的时候再多加一个条件capital='F'就行了。
好的,我试试。谢谢你的回复。
网络咖啡 2018-04-28
  • 打赏
  • 举报
回复
这个建议第一要分多个SQLite库文件,例如按照首字母分别存入不同的库文件,避免库文件过大,影响读写速度。 插入时如果是一次插入一条没啥好办法,如果是一次插入多条,建议使用事务,可以大幅提高写入效率。 读取的时候不建议一次加载完成,建议分批加载,例如每次加载10个那种的上拉刷新方式。
Jing丶無雙 2018-04-28
  • 打赏
  • 举报
回复
可以这样你开始存入你的数据库的时候就多一个字段capital,这样你就得在存入数据库前每次都去判断一下联系人姓名第一个字的首写字母是什么,根据文字获取其首写字母这样的方法网上是有的。最终查询的时候再多加一个条件capital='F'就行了。
lonelyhacker 2018-04-27
  • 打赏
  • 举报
回复
大家有什么好的想法的,可以给个建议的。谢谢。

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧