博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLite Expert表分离和解决SQLite Expert删除表后大小不变的问题
阅读量:7157 次
发布时间:2019-06-29

本文共 1250 字,大约阅读时间需要 4 分钟。

    最后要使用到号码归属地的查询,在网上找到一个数据库文件,大小有12M多,压缩成zip也有1.9M,这样对于一个apk的大小非常不利,后来看了一下数据库的内容。发现有非常多冗余,特别是中文字符占用非常大的空间。在网上找了一种方法把一个表进行分离,分成两个表,两个表之间能够使用外键的形式进行关联。这里用到的几个表名:tb_city、mob_location、tb_mobile。终于是要把表mob_location分离成tb_city、tb_mobile在SQLite Expert上能够使用sql语句,这里仅仅讲一些我觉得关键的部分,如创建表、新建字段打开数据库、设置主键、外键这些都不讲。对于SQLite Expert一点都不懂的朋友能够先百度下怎样使用。把查询到的数据插入到指定表中,去掉反复的

insert into tb_city(location, areacode) select location, areacode from mob_location group by location

同一时候查询两个表

select * from tb_city, mob_location where tb_city.[location] = mob_location.[location]
select * from tb_city, tb_mobile where tb_city.[_id] = tb_mobile.[foreign_id] and tb_mobile.[number] = 1342797
以上语句在java代码中也是适用的。如代码中使用:
String sql = "select * from tb_city, tb_mobile where tb_city.[_id] = tb_mobile.[foreign_id] and tb_mobile.[number] = " + num;

把两个表查询得到的数据插入到一个表中

insert into tb_mobile(foreign_id, number) select tb_city.[_id], mob_location.[_id] from tb_city, mob_location where tb_city.[location] = mob_location.[location]

到这里就把表mob_location分离成tb_city、tb_mobile了。此时看下数据库大小为16M。就把表mob_location右键删除。但发现数据库的大小没有不论什么改变,后来查出来删除仅仅是把它放到缓存,并没有清空,须要在数据库上右键->vacuum,点击清空,再去看下大小就仅仅有3M多一点,这样容量少了非常多。再做下zip压缩。但压缩的效果不是非常理想。

数据库和代码能够到下面链接下载:

转载于:https://www.cnblogs.com/gavanwanggw/p/7049295.html

你可能感兴趣的文章
算法的乐趣 (王晓华 著)
查看>>
Linux - Ubuntu开启SSH服务
查看>>
Gulp命令自动生成精灵图
查看>>
如何修改Myeclipse的JSP模板
查看>>
Python pymysql——Mysql数据库Python化操作
查看>>
多功能播放器代码
查看>>
分离链接法的删除操作函数
查看>>
【转】Windows驱动开发如何入门
查看>>
python学习------模块
查看>>
前端js框架引入管理bundle.js
查看>>
vs2015 + opencv3.4.0 + qt msvc2015_64-5.7.1
查看>>
[c语言]左移和右移
查看>>
[HAOI2008]排名系统 & [Zjoi2006]GameZ游戏排名系统 BZOJ1862&BZOJ1056
查看>>
电子商城实录------载入数据库模型
查看>>
iOS上的反射用法
查看>>
python之路-09-文件操作
查看>>
Linux常用命令大全
查看>>
链表API
查看>>
table中绝对定位元素相对td定位失效解决方案
查看>>
打印和显示特殊需求
查看>>