Skip to content

Commit 00d20c1

Browse files
committed
sqlite
1 parent 4a49cb5 commit 00d20c1

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
#使用Sqlite时有哪些可以优化的地方
2+
3+
##创建索引
4+
5+
索引有助于加快 SELECT 查询和 WHERE 子句,但它会减慢使用 UPDATE 和 INSERT 语句时的数据输入。索引可以创建或删除,但不会影响数据。
6+
7+
###优点
8+
9+
加快了数据库检索的速度,包括对单表查询、连表查询、分组查询、排序查询。经常是一到两个数量级的性能提升,且随着数据数量级增长。
10+
11+
###缺点
12+
13+
索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。
14+
15+
在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。
16+
17+
###使用场景
18+
19+
- 当某字段数据更新频率较低,查询频率较高,经常有范围查询(>, <, =, >=, <=)或order by、group by发生时建议使用索引。并且选择度越大,建索引越有优势,这里选择度指一个字段中唯一值的数量/总的数量。
20+
- 经常同时存取多列,且每列都含有重复值可考虑建立复合索引
21+
22+
索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。
23+
在对数据库进行增删改时需要维护索引,所以会对增删改的性能存在影响。
24+
25+
###什么情况下要避免使用索引
26+
27+
虽然索引的目的在于提高数据库的性能,但这里有几个情况需要避免使用索引。使用索引时,应重新考虑下列准则:
28+
29+
- 索引不应该使用在较小的表上。
30+
- 索引不应该使用在有频繁的大批量的更新或插入操作的表上。
31+
- 索引不应该使用在含有大量的 NULL 值的列上。
32+
- 索引不应该使用在频繁操作的列上。
33+
34+
##使用事务
35+
36+
##特点
37+
38+
原子性操作,要么全部成功,要么全部失败;在执行大量数据的插入操作时,避免频繁操作cursor,可以大幅减少insert操作时间,一般为1-2个量级
39+
40+
##查询必须字段
41+
42+
查询时只取需要的字段和结果集,更多的结果集会消耗更多的时间及内存,更多的字段会导致更多的内存消耗。
43+
44+
#更多参考资料
45+
46+
- [SQLite 索引](http://www.runoob.com/sqlite/sqlite-index.html)
47+
- [性能优化之数据库优化](http://www.trinea.cn/android/database-performance/)
48+
49+
#关于我
50+
51+
江湖人称『凯子哥』,其实就是一个闷骚的90后技术宅,Android开发者,喜欢技术分享,热爱开源。
52+
53+
- 我的CSDN博客:[http://blog.csdn.net/zhaokaiqiang1992](http://blog.csdn.net/zhaokaiqiang1992)
54+
- 我的微博:[裸奔的凯子哥](http://weibo.com/zhaokaiqiang1992),每天会不定时分享高质量博客,欢迎关注
55+
- 微信公众账号:kaizige1992
56+
57+
![](http://i12.tietuku.com/f55c34ddb1ba3830.jpg)

0 commit comments

Comments
 (0)