SQLite Expert表分離和解決SQLite Expert刪除表後大小不變的問題

來源:互聯網
上載者:User

標籤:bsp   之間   div   java代碼   select   java   沒有   http   mod   

    最後要使用到號碼歸屬地的查詢,在網上找到一個資料庫檔案。大小有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壓縮,但壓縮的效果不是非常理想。

資料庫和代碼能夠到下面連結下載:

http://pan.baidu.com/s/1sjFWJRv


SQLite Expert表分離和解決SQLite Expert刪除表後大小不變的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.