sqlite优化记录:建立索引加快查询速度
2023-09-11 14:16:42 时间
凡是数据库中,索引的存在就是为了提高查询速度的,数据库的索引有点类似于书本上面的目录的概念,因为在英文中都是index,事实上也就是目录。
其算法应该叫做“倒排索引”,这个其实也类似于搜索引擎里面的基本算法。
测试:10w条数据,没有索引的情况下,查询一条数据大约需要550ms以上。
建立索引后,数据库的体积增大了3倍左右,但是同样的查询却减少到8ms的级别,提升了70倍
有时候关于sqlite数据库出错或者没法用的情况看这里
下面是在android手机上面的测试代码
01 |
//创建数据库 |
02 |
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123" , null ); |
03 |
database.execSQL( "create table if not exists t1(a,b)" ); |
04 |
//创建索引 |
05 |
database.execSQL( "create index if not exists ia on t1(a,b)" ); |
06 |
//插入10w条数据 |
07 |
for ( int i = 0 ; i < 100000 ; i++) { |
08 |
database.execSQL( "insert into t1(a, b) values(?, ?)" , new String[] { "" + i, "name" + Math.random() * i }); |
09 |
} |
10 |
//查询一条数据 |
11 |
Log.v( "test" , "开始查询" ); |
12 |
Cursor cursor = database.rawQuery( "select * from t1 where a='88980'" , null ); |
13 |
while (cursor.moveToNext()){ |
14 |
String a = cursor.getString(cursor.getColumnIndex( "a" )); |
15 |
String b = cursor.getString(cursor.getColumnIndex( "b" )); |
16 |
Log.v( "test" , "查找结果---------->" + "a: " +a+ " " + "b: " +b); |
17 |
} |
18 |
Log.v( "test" , "查找结束" ); |
本文地址http://tweetyf.org/2012/06/sqlite_optimization_using_index.html
相关文章
- Android数据库高手秘籍(一)——SQLite命令
- [置顶]【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】
- Android实例-操作sqlite数据之自建导航(XE8+小米2)
- iOS开发之SQLite--C语言接口规范(五)——iOS开发使用SQLite实例
- sqlite之复习
- 数据库 SQLite ORM框架 LitePal [MD]
- SQLite使用
- C# SQLite数据库 访问封装类
- Atitit hibernste5 注解方式开发总结 目录 1. 映入hb5的jar 建立项目1 1.1. 建表tab1 ,这里使用了sqlite数据库1 1.2. 建立映射实体类tab1
- paip.sqlite 管理最好的工具 SQLite Expert 最佳实践总结
- 【项目实战】轻量级、开源、自包含的SQL数据库引擎——SQLite入门介绍
- Qt操作SQLite数据库
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
- android 同时打开两个sqlite database db
- Android中用文件初始化sqlite 数据库(二)
- sqlite数据库下载安装和初步操作和所遇到的问题near "sqlite3":syntax error
- Mac下sqlitestudio查看Sqlite数据库(七十二)
- 【python 问题解决】 ---- sqlite 查询数据返回的是元组,转换为字典