精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android性能優化之數據庫優化

移動開發 Android
本文為性能優化的第一篇——數據庫性能優化,原理適用于大部分數據庫包括Sqlite、Mysql、Oracle、Sql server,詳細介紹了索引(優缺點、分類、場景、規則)和事務,最后介紹了部分單獨針對Sqlite的優化。

1、索引
簡單的說,索引就像書本的目錄,目錄可以快速找到所在頁數,數據庫中索引可以幫助快速找到數據,而不用全表掃描,合適的索引可以大大提高數據庫查詢的效率。
(1). 優點
大大加快了數據庫檢索的速度,包括對單表查詢、連表查詢、分組查詢、排序查詢。經常是一到兩個數量級的性能提升,且隨著數據數量級增長。

(2). 缺點
索引的創建和維護存在消耗,索引會占用物理空間,且隨著數據量的增加而增加。
在對數據庫進行增刪改時需要維護索引,所以會對增刪改的性能存在影響。

(3). 分類
a. 直接創建索引和間接創建索引
直接創建: 使用sql語句創建,Android中可以在SQLiteOpenHelper的onCreate或是onUpgrade中直接excuSql創建語句,語句如

  1. CREATE INDEX mycolumn_index ON mytable (myclumn) 

間接創建: 定義主鍵約束或者唯一性鍵約束,可以間接創建索引,主鍵默認為唯一索引。

b. 普通索引和唯一性索引
普通索引:

  1. CREATE INDEX mycolumn_index ON mytable (myclumn) 

唯一性索引:保證在索引列中的全部數據是唯一的,對聚簇索引和非聚簇索引都可以使用,語句為

  1. CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn) 

c. 單個索引和復合索引

單個索引:索引建立語句中僅包含單個字段,如上面的普通索引和唯一性索引創建示例。
復合索引:又叫組合索引,在索引建立語句中同時包含多個字段,語句如:

CREATE INDEX name_index ON username(firstname, lastname)

  1. CREATE INDEX name_index ON username(firstname, lastname) 

其中firstname為前導列。

d. 聚簇索引和非聚簇索引(聚集索引,群集索引)
聚簇索引:物理索引,與基表的物理順序相同,數據值的順序總是按照順序排列,語句為:

  1. CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW 

其中WITH ALLOW_DUP_ROW表示允許有重復記錄的聚簇索引

非聚簇索引:

  1. CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) 

索引默認為非聚簇索引

(4). 使用場景
在上面講到了優缺點,那么肯定會對何時使用索引既有點明白又有點糊涂吧,那么下面總結下:
a.  當某字段數據更新頻率較低,查詢頻率較高,經常有范圍查詢(>, <, =, >=, <=)或order by、group by發生時建議使用索引。并且選擇度越大,建索引越有優勢,這里選擇度指一個字段中唯一值的數量/總的數量。
b.  經常同時存取多列,且每列都含有重復值可考慮建立復合索引

(5). 索引使用規則
a.  對于復合索引,把使用最頻繁的列做為前導列(索引中***個字段)。如果查詢時前導列不在查詢條件中則該復合索引不會被使用。

  1. create unique index PK_GRADE_CLASS on student (grade, class) 


 

  1. select * from student where class = 2未使用到索引 
  2. select * from dept where grade = 3使用到了索引 

b.  避免對索引列進行計算,對where子句列的任何計算如果不能被編譯優化,都會導致查詢時索引失效
 

  1. select * from student where tochar(grade)=’2′ 


c.  比較值避免使用NULL
d.  多表查詢時要注意是選擇合適的表做為內表。連接條件要充份考慮帶有索引的表、行數多的表,內外表的選擇可由公式:外層表中的匹配行數*內層表中每一次查找的次數確定,乘積最小為***方案。實際多表操作在被實際執行前,查詢優化器會根據連接條件,列出幾組可能的連接方案并從中找出系統開銷最小的***方案。

e.  查詢列與索引列次序一致
f.  用多表連接代替EXISTS子句
g.  把過濾記錄數最多的條件放在最前面
h.  善于使用存儲過程,它使sql變得更加靈活和高效(Sqlite不支持存儲過程::>_<:: )

(6)索引檢驗

建立了索引,對于某條sql語句是否使用到了索引可以通過執行計劃查看是否用到了索引。

2、使用事務
使用事務的兩大好處是原子提交和更優性能。
(1) 原子提交
原則提交意味著同一事務內的所有修改要么都完成要么都不做,如果某個修改失敗,會自動回滾使得所有修改不生效。

(2) 更優性能
Sqlite默認會為每個插入、更新操作創建一個事務,并且在每次插入、更新后立即提交。

這樣如果連續插入100次數據實際是創建事務->執行語句->提交這個過程被重復執行了100次。如果我們顯示的創建事務->執行100條語句->提交會使得這個創建事務和提交這個過程只做一次,通過這種一次性事務可以使得性能大幅提升。尤其當數據庫位于sd卡時,時間上能節省兩個數量級左右。

Sqlte顯示使用事務,示例代碼如下:


  1. public void insertWithOneTransaction() { 
  2.     SQLiteDatabase db = sqliteOpenHelper.getWritableDatabase(); // Begins a transaction  db.beginTransaction(); 
  3. try { // your sqls for (int i = 0; i < 100; i++) { 
  4.             db.insert(yourTableName, null, value); 
  5.         } // marks the current transaction as successful  db.setTransactionSuccessful(); 
  6.     } catch (Exception e) { // process it  e.printStackTrace(); 
  7.     } finally { // end a transaction  db.endTransaction(); 
  8.     } 

其中sqliteOpenHelper.getWritableDatabase()表示得到寫表權限。

3、其他優化
(1) 語句的拼接使用StringBuilder代替String
這個就不多說了,簡單的string相加會導致創建多個臨時對象消耗性能。StringBuilder的空間預分配性能好得多。如果你對字符串的長度有大致了解,如100字符左右,可以直接new StringBuilder(128)指定初始大小,減少空間不夠時的再次分配。

(2) 讀寫表

在寫表時調用sqliteOpenHelper..getWritableDatabase(),在讀表時候調用sqliteOpenHelper..getReadableDatabase(),getReadableDatabase性能更優。

(3) 查詢時返回更少的結果集及更少的字段。
查詢時只取需要的字段和結果集,更多的結果集會消耗更多的時間及內存,更多的字段會導致更多的內存消耗。

(4) 少用cursor.getColumnIndex

根據性能調優過程中的觀察cursor.getColumnIndex的時間消耗跟cursor.getInt相差無幾。可以在建表的時候用static變量記住某列的index,直接調用相應index而不是每次查詢。


  1. public static final String       HTTP_RESPONSE_TABLE_ID = android.provider.BaseColumns._ID;
  2. public static final String       HTTP_RESPONSE_TABLE_RESPONSE = "response"public List<Object> getData() { 
  3.     …… 
  4.     cursor.getString(cursor.getColumnIndex(HTTP_RESPONSE_TABLE_RESPONSE)); 
  5.     …… 

優化為

public static final String HTTP_RESPONSE_TABLE_ID = android.provider.BaseColumns._ID;  public static final String HTTP_RESPONSE_TABLE_RESPONSE  = "response";  public static final int HTTP_RESPONSE_TABLE_ID_INDEX  = 0;  public static final int HTTP_RESPONSE_TABLE_URL_INDEX = 1;  public List<Object> getData() {     ……     cursor.getString(HTTP_RESPONSE_TABLE_RESPONSE_INDEX);     …… }

 

4、異步線程
Sqlite是常用于嵌入式開發中的關系型數據庫,完全開源。
與Web常用的數據庫Mysql、Oracle db、sql server不同,Sqlite是一個內嵌式的數據庫,數據庫服務器就在你的程序中,無需網絡配置和管理,數據庫服務器端和客戶端運行在同一進程內,減少了網絡訪問的消耗,簡化了數據庫管理。不過Sqlite在并發、數據庫大小、網絡方面存在局限性,并且為表級鎖,所以也沒必要多線程操作。

 

Android中數據不多時表查詢可能耗時不多,不會導致anr,不過大于100ms時同樣會讓用戶感覺到延時和卡頓,可以放在線程中運行,但sqlite在并發方面存在局限,多線程控制較麻煩,這時候可使用單線程池,在任務中執行db操作,通過handler返回結果和ui線程交互,既不會影響UI線程,同時也能防止并發帶來的異常。實例代碼如下:

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor(); singleThreadExecutor.execute(new Runnable() {       @Override public void run() {  // db operetions, u can use handler to send message after db.insert(yourTableName, null, value);          handler.sendEmptyMessage(xx);     } });
責任編輯:張葉青 來源: 開源社區
相關推薦

2023-07-12 08:55:16

PawSQL數據庫

2018-03-30 14:30:10

數據庫SQL語句性能優化

2018-03-30 13:59:22

數據庫SQL語句性能優化

2011-03-31 09:19:54

數據庫優化

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2021-01-31 17:50:41

數據庫查詢程序員

2011-05-20 10:30:20

ORACLE數據庫性能優化

2011-05-18 09:39:19

Oracle數據庫性能優化

2019-12-13 10:25:08

Android性能優化啟動優化

2013-02-20 14:32:37

Android開發性能

2014-07-18 09:33:53

數據庫數據庫優化

2010-12-10 10:17:21

關系型數據庫

2010-04-09 15:08:17

Oracle 數據庫性

2010-05-10 15:50:39

Oracle數據庫性能

2017-01-15 15:13:37

Android性能優化優化點

2015-09-10 09:24:58

2015-09-16 14:37:50

Android性能優化運算

2015-09-16 13:54:30

Android性能優化渲染

2015-09-16 15:48:55

Android性能優化電量

2011-03-24 12:32:15

數據庫性能優化
點贊
收藏

51CTO技術棧公眾號

九九热只有这里有精品| 欧美在线观看视频| 亚洲国产综合av| heyzo高清中文字幕在线| 91一区二区三区在线播放| 国产精品高潮粉嫩av| ijzzijzzij亚洲大全| 黄色免费av网站| 99久久综合| 精品免费国产一区二区三区四区| av免费观看大全| 69久久久久| 成人av网站免费观看| 国产成人啪精品视频免费网| 三级在线观看免费大全| 日韩高清一级| 日韩亚洲国产中文字幕欧美| 任你操这里只有精品| 免费网站免费进入在线| 在线免费av电影| 韩国成人精品a∨在线观看| 久久久久久久久久久av| 懂色av粉嫩av浪潮av| 风间由美一区二区av101 | 日韩二区三区在线| 不卡的av中文字幕| 亚洲校园激情春色| 亚洲高清不卡在线观看| 午夜啪啪免费视频| 国产小视频在线观看| 菠萝蜜视频在线观看一区| 成人免费福利在线| 免费在线不卡av| 欧美亚洲专区| 91精品国产91久久久久久最新| 婷婷国产成人精品视频| 精品精品久久| 亚洲一级黄色片| 久久一区二区电影| 高清一区二区三区| 精品久久久久久综合日本欧美| 中文字幕在线视频精品| 国产美女久久| 欧美色综合久久| 天天爽天天爽夜夜爽| 中文字幕线观看| 亚洲丝袜精品| 中文字幕一区二区三区在线播放 | 国产sm主人调教女m视频| 日韩高清欧美激情| 国产精品扒开腿做爽爽爽视频| 免费黄色网址在线| 亚洲欧美日韩国产一区二区| 98精品在线视频| 国产福利拍拍拍| 在线视频亚洲| 国产成人av在线播放| av片免费观看| 热久久免费视频| 国产精品欧美亚洲777777 | 欧美一区二区三区四区久久| 97超碰人人爽| 日本在线一区二区三区| 日韩精品一区二| av在线播放网址| 亚洲国产合集| 亚洲色图15p| 91视频免费看片| 国产精品久久久久久久久久10秀| 久久精品最新地址| 久久久久久久国产视频| 日韩视频三区| 国产精品久久久久久搜索| 中文字幕人妻一区二区在线视频 | 欧美专区在线| 国产成人综合av| 一区二区三区午夜| 国产成人午夜电影网| 国产在线观看一区| 成黄免费在线| 一区二区三区欧美| 欧美s码亚洲码精品m码| 99欧美精品| 日韩小视频在线观看专区| 玖玖爱在线精品视频| 国内成人自拍| 欧美成人第一页| 久久久国产精品成人免费| 日本欧美大码aⅴ在线播放| 成人精品在线观看| av女名字大全列表| 国产精品伦理在线| 无罩大乳的熟妇正在播放| 69堂免费精品视频在线播放| 欧美一卡二卡在线观看| 欧美做受喷浆在线观看| 国产精品97| 91av在线精品| h片在线免费看| 国产亲近乱来精品视频| 乱熟女高潮一区二区在线| 欧洲成人一区| 亚洲第一网中文字幕| 337人体粉嫩噜噜噜| 亚洲一级网站| 国产日韩欧美在线| 欧美视频免费一区二区三区| 亚洲精品久久7777| 精品999在线| 欧美五码在线| 欧美高清电影在线看| 日韩精选在线观看| 成人深夜福利app| 亚洲一区二区三区在线观看视频| 精品丝袜在线| 日韩欧美一级精品久久| 俄罗斯毛片基地| 欧美一级二区| 狠狠色伊人亚洲综合网站色| 国产调教视频在线观看| 欧美在线不卡一区| 蜜桃精品一区二区| 国精品一区二区| 成人综合网网址| av中文字幕一区二区三区| 欧美日韩国产黄| 午夜美女福利视频| 久久久久久久久久久9不雅视频| 欧美激情成人在线视频| 这里只有精品国产| 91蜜桃免费观看视频| 成人一级生活片| 欧美日韩国产一区二区在线观看| 一区二区三区视频观看| 探花视频在线观看| 91一区二区在线观看| 亚洲熟妇无码一区二区三区| 88久久精品| 久久99热精品这里久久精品| 国产乱淫av片免费| 亚洲欧洲性图库| 日韩高清第一页| 日韩中文字幕高清在线观看| 国产精品视频自拍| av在线电影网| 欧美日韩一区二区三区免费看| 精品人妻无码一区| 日本成人在线不卡视频| 少妇精品久久久久久久久久| 亚洲电影有码| 精品国产欧美一区二区五十路| 在线免费观看av片| 国产精品久久久久久久蜜臀 | 久久久久久久久伊人| 玩弄中年熟妇正在播放| 日韩啪啪网站| 日本成人激情视频| 成年人在线观看| 欧美日韩久久一区二区| 欧美手机在线观看| 国产东北露脸精品视频| 男女日批视频在线观看| 天天久久夜夜| 国产精品久久网| 国产原厂视频在线观看| 日韩欧美国产午夜精品| 国产午夜久久久| 久久青草国产手机看片福利盒子| 97视频在线免费播放| 日本a口亚洲| 666精品在线| 爱福利在线视频| 亚洲欧美精品一区| 中文字幕久久网| 亚洲女爱视频在线| 污污内射在线观看一区二区少妇| 欧美综合二区| 裸体裸乳免费看| 美女福利一区| 国产日韩在线精品av| 欧美野外wwwxxx| 亚洲天天在线日亚洲洲精| 91亚洲国产成人精品一区| 亚洲国产日韩a在线播放性色| 亚洲精品视频大全| 精品一区二区成人精品| 国产夫妻自拍一区| 国产精品一在线观看| 91久久在线观看| 偷拍自拍在线看| 久久成人亚洲精品| 你懂的在线看| 日韩视频免费观看高清在线视频| 欧美日韩精品区| 亚洲欧洲www| 国产精品无码一区二区三区免费 | 午夜精品免费在线| 欧美福利在线视频| 99久久精品国产一区二区三区| 亚洲福利精品视频| 亚洲视频免费| 亚洲国产欧美不卡在线观看| 国产精品45p| 成人黄色免费看| 成人av三级| 色综合久久久888| 成人免费视频| 精品视频一区在线视频| 99在线观看免费| 欧美中文字幕亚洲一区二区va在线 | 日本中文字幕在线视频观看| 欧美日韩在线观看视频小说| 九九九九九九精品| 91久久精品无嫩草影院| 国产精品久久久久国产a级| free性护士videos欧美| 久久夜色撩人精品| 阿v免费在线观看| 亚洲美女激情视频| 欧美熟女一区二区| 欧美一级欧美三级在线观看| 久久精品无码av| 精品国产91久久久久久老师| 免费无码毛片一区二区app| 一区在线观看免费| av黄色免费在线观看| 国产视频一区二区三区在线观看| 中文字幕亚洲综合| 国产精品高潮呻吟AV无码| 日本久久精品电影| 五月婷婷亚洲综合| 亚洲成av人影院| 久久久久亚洲天堂| 亚洲精品日产精品乱码不卡| 99久久久免费精品| 国产精品毛片大码女人| 日本猛少妇色xxxxx免费网站| 久久综合av免费| 少妇精品一区二区| 99久久免费国产| 美女黄色一级视频| 成人动漫一区二区三区| 东京热av一区| 99在线视频精品| 噜噜噜在线视频| 91一区在线观看| 国产精品网红直播| 人人视频精品| 国产成人免费av| 成人在线观看免费播放| 国产日本欧美一区二区三区在线| 福利一区二区免费视频| 国产日本欧美在线观看| 91国产一区| 999视频在线观看| jazzjazz国产精品久久| 国产精品久久波多野结衣| 美女视频亚洲色图| 欧美极品一区| 日韩成人a**站| 强伦女教师2:伦理在线观看| 一区二区三区四区在线观看国产日韩| 热这里只有精品| 激情久久五月| av免费中文字幕| 精品一区二区影视| 香蕉视频在线观看黄| thepron国产精品| 国产高清一区二区三区四区| 国产精品传媒在线| 久久激情免费视频| 粉嫩老牛aⅴ一区二区三区| 国产女主播喷水视频在线观看| 欧美三级中文字| 99久久国产免费| 亚洲精品99久久久久中文字幕| 欧美高清电影在线| 久久夜色精品国产| 在线最新版中文在线| 国产欧美在线观看| 国产精品chinese在线观看| 日本一区二区三区免费观看| 欧美丰满日韩| 人人干视频在线| 久久精品国产亚洲aⅴ| 又色又爽又黄18网站| 久久精品亚洲一区二区三区浴池| 亚洲国产精品一区二区久久hs| 亚洲香蕉伊在人在线观| 欧美高清69hd| 精品久久久久久亚洲综合网 | 精品一区二区三区在线观看视频| 国产视色精品亚洲一区二区| 久久免费精品视频在这里| 亚洲国产精品无码观看久久| 日韩电影在线免费| yjizz视频| 国产精品高潮久久久久无| 中文字幕亚洲高清| 宅男噜噜噜66一区二区66| 四虎在线免费看| 久热在线中文字幕色999舞| 欧美成人性网| 国产精品一 二 三| 久久久久久久久久久久久久| 天天碰免费视频| 波多野结衣在线aⅴ中文字幕不卡| 伊人影院综合网| 欧美日韩免费区域视频在线观看| 96日本xxxxxⅹxxx17| 亚洲欧美三级伦理| 国产理论电影在线| 91免费高清视频| 日本黄色精品| 国产xxxxx视频| 91在线观看一区二区| 国产在线欧美在线| 91精品国产入口在线| 第三区美女视频在线| 4444欧美成人kkkk| 精品在线网站观看| 日韩一区二区高清视频| 久久se精品一区精品二区| 中文字幕在线观看免费高清| 激情久久av一区av二区av三区| aaa一区二区三区| 久久久久北条麻妃免费看| 黄色日韩网站| 日韩三级电影网站| 日日噜噜夜夜狠狠视频欧美人 | 亚洲素人一区二区| 又骚又黄的视频| 神马久久桃色视频| 日本黄色一区| 一区二区三区四区欧美| 青青青爽久久午夜综合久久午夜| 播金莲一级淫片aaaaaaa| 欧美三级免费观看| 免费在线稳定资源站| 青青在线视频一区二区三区| 校园春色另类视频| 欧美日韩在线不卡视频| 久久久噜噜噜久久人人看| 国内自拍视频在线播放| 亚洲一区999| 97精品国产综合久久久动漫日韩| 日韩资源av在线| 日本午夜一本久久久综合| 一级特黄曰皮片视频| 欧美天堂一区二区三区| 91精彩视频在线观看| 国产拍精品一二三| 在线一区免费| 久久av一区二区三| 午夜视频在线观看一区二区 | 日韩色av导航| 成人短视频软件网站大全app| 色呦呦网站入口| 国产福利一区在线| 日韩精品久久久久久久| 亚洲精品综合久久中文字幕| 日韩精品三区| 99re99热| av欧美精品.com| 超碰在线观看91| 久久精品成人欧美大片古装| 日韩成人在线看| 日日摸日日碰夜夜爽av| 国产三级三级三级精品8ⅰ区| 中文字幕永久免费视频| 美女啪啪无遮挡免费久久网站| 成人av影音| 国产三级日本三级在线播放| 亚洲欧洲精品一区二区三区| 蜜臀久久99精品久久久| 日本一区二区不卡| 99久久综合狠狠综合久久aⅴ| 亚洲成年人在线观看| 91成人在线观看喷潮| av在线免费网站| 久久亚洲免费| 狠狠网亚洲精品| 西西44rtwww国产精品| 中文字幕亚洲一区二区三区| 成人黄色av网址| 91热这里只有精品| 尤物av一区二区| 成人亚洲性情网站www在线观看| 91福利入口| 日本欧美在线观看| 国产系列精品av| 爱福利视频一区| 亚洲人成网www| 丰满少妇中文字幕| 欧洲精品在线观看| 丁香花在线电影| 日日噜噜噜夜夜爽爽| 91免费版在线看| www.国产精品视频| 国产欧美一区二区三区在线|