凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录。
其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基本算法。
测试:10w条数据,没有索引的情况下,查询一条数据大约需要550ms以上。
建立索引后,数据库的体积增大了3倍左右,但是同样的查询却减少到8ms的级别,提升了70倍
有时候关于sqlite数据库出错或者没法用的情况看这里
下面是在android手机上面的测试代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
//创建数据库
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile,
"test123"
,
null
);
database.execSQL(
"create table if not exists t1(a,b)"
);
//创建索引
database.execSQL(
"create index if not exists ia on t1(a,b)"
);
//插入10w条数据
for
(
int
i =
0
; i <
100000
; i++) {
database.execSQL(
"insert into t1(a, b) values(?, ?)"
,
new
String[] {
""
+ i,
"name"
+ Math.random() * i });
}
//查询一条数据
Log.v(
"test"
,
"开始查询"
);
Cursor cursor = database.rawQuery(
"select * from t1 where a='88980'"
,
null
);
while
(cursor.moveToNext()){
String a = cursor.getString(cursor.getColumnIndex(
"a"
));
String b = cursor.getString(cursor.getColumnIndex(
"b"
));
Log.v(
"test"
,
"查找结果---------->"
+
"a: "
+a+
" "
+
"b: "
+b);
}
Log.v(
"test"
,
"查找结束"
);
|
本文地址http://tweetyf.org/2012/06/sqlite_optimization_using_index.html