FTS数据库优化(Android)原理与应用详解(2)

通过对Android官方FTS数据库的测试,发现在大规模数据(4990000条)下,FTS虚拟表相比普通表造成数据库文件明显膨胀,但在查询速度上有显著优势。特别是对于非全词查询,如部分单词和单个字母,FTS性能更优。然而,为普通DB添加索引提升效果不明显。
摘要由CSDN通过智能技术生成
3.在Android上FTS优化效果如何?——Android官方demo性能评测

接下来的问题就是FTS的优化效果如何了。先在Android官方demo的基础上做一些测试。demo中数据库是一个英文字典,单词条目998。Android/SQLite数据库本身的性能已经足够强悍,在这个量级下显然看不出差异。将数据规模扩大5000倍,即将998条数据循环插入数据库5000次:4990000。这个数据库规模已经远超牛津大辞典,据说牛津大辞典第二版一共有25万英文单词。与FTS PK的是一般的数据库表,同样只有两个字段。创建数据库代码:

        private static final String FTS_TABLE_CREATE =
                    "CREATE VIRTUAL TABLE " + FTS_VIRTUAL_TABLE +
                    " USING fts3 (" +
                    KEY_WORD + ", " +
                    KEY_DEFINITION + ");";

        private static final String NO_FTS_TABLE_CREATE =
                "CREATE TABLE " + NO_FTS_VIRTUAL_TABLE +
                        " (" +
                        KEY_WORD + " TEXT, " +
                        KEY_DEFINITION + " TEXT);";


        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.i(TAG, "DictionaryOpenHelper.onCreate()");
            mDatabase = db;
            if (fts) {
                mDatabase.execSQL(FTS_TABLE_CREATE);
                loadDictionary();
            } else {
                mDatabase.execSQL(NO_FTS_TABLE_CREATE);
                loadDictionary2();
            }
        }

loadDictionary()/loadDictionary2()分别将4990000条数据插入到FTS virtual table和一般table。再看一下query的逻辑,MATC

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值