zoukankan      html  css  js  c++  java
  • iOS开发中的SQLite知识总结

    一、查询优化

    1.使用索引
      当表中的数据太多时,建立索引可以明显提高查询速度
      创建索引

    sql> CREATE INDEX 索引名 ON 表(字段1[ASC,DESC],字段2[ASC,DESC]...)

      删除索引

    sql> DROP INDEX 索引名

      重建索引

    sql> REINDEX [索引名,表名]


    2.数据分析
      对表的索引的分析,ANALYZE命令令集合关于索引的统计信息并将它们储存在数据库的一个特殊表中,查询优化器可以用该表来制作更好的索引选择。 若不给出参数,所有附加数据库中的所有索引被分析。若参数给出数据库名,该数据库中的所有索引被分析。若给出表名 作参数,则只有关联该表的索引被分析。
      

    sql> ANALYZE [索引名,表名]

    二、数据清理

      大量的删除表中的数据,SQLite并没有释放这些空间,需要运行如下命令精简数据库 

    sqlite> VACUUM;

    三、数据加密

    1.自己源码编译
      实现源码中预留的加密解密接口
    2.使用SQLCipher
      源码在这里
      step by step的使用过程在这里注意文章中几个宏的下划线没有加,不要盲目的复制粘贴
      上一步的SQLCipher源码编译后,目录里面会有个sqlite的命令行程序,使用这个程序就可以给本地的数据库加密,然后很方便的在程序中使用了。具体命令看他的文档

    四、查看工具

    MesaSQLite  Mac OS X下的查看工具,当表的数据比较多时,有点慢
    FireFox的 SQLite Manager插件

    五、iOS开发第三方封装

    1.FMDataBase 方便的存取,在多线程中使用也很方便
    2.sqlitepersistentobjects 直接让NS对象本身就有save,load功能,让使用者在不写sql语句的情况下使用SQLite
    已经不再更新

    参考:
    1.http://www.cnblogs.com/stephen-liu74/archive/2012/01/14/2322335.html
    2.http://sqlcipher.net

  • 相关阅读:
    tensorflow RNN和简单例子
    推荐系统理论及实战(转)附个人的理解和实战
    mysql 中 case when then .... else end 的简单使用
    动态规划最常见的习题 (最长公共子串、最长公共子序列、最短编辑距离)
    神经网络中 梯度消失、梯度爆炸的问题分析
    深度学习基础(转)
    用户兴趣的模型 浅析
    20190317 A
    pkuwc2019游记
    练习题16
  • 原文地址:https://www.cnblogs.com/v2m_/p/2846177.html
Copyright © 2011-2022 走看看