70人参与 • 2024-05-15 • Sqlite
一、创建索引:
在sqlite中,创建索引的sql语法和其他大多数关系型数据库基本相同,因为这里也仅仅是给出示例用法:
从.indices命令的输出可以看出,三个索引均已成功创建。
二、删除索引:
索引的删除和视图的删除非常相似,含义也是如此,因此这里也只是给出示例:
三、重建索引:
重建索引用于删除已经存在的索引,同时基于其原有的规则重建该索引。这里需要说明的是,如果在reindex语句后面没有给出数据库名,那么当前连接下所有attached数据库中所有索引都会被重建。如果指定了数据库名和表名,那么该表中的所有索引都会被重建,如果只是指定索引名,那么当前数据库的指定索引被重建。
四、数据分析:
和postgresql非常相似,sqlite中的analyze命令也同样用于分析数据表和索引中的数据,并将统计结果存放于sqlite的内部系统表中,以便于查询优化器可以根据分析后的统计数据选择最优的查询执行路径,从而提高整个查询的效率。见如下示例:
五、数据清理:
和postgresql中的vacuum命令相比,他们的功能以及实现方式非常相似,不同的是postgresql提供了更细的粒度,而sqlite只能将该命令作用于数据库,无法再精确到数据库中指定的数据表或者索引,然而这一点恰恰是postgresql可以做到的。
当某个数据库中的一个或多个数据表存在大量的插入、更新和删除等操作时,将会有大量的磁盘空间被已删除的数据所占用,在没有执行vacuum命令之前,sqlite并没有将它们归还于操作系统。由于该类数据表中的数据存储非常分散,因此在查询时,无法得到更好的批量io读取效果,从而影响了查询效率。
在sqlite中,仅支持清理当前连接中的主数据库,而不能清理其它attached数据库。vacuum命令在完成数据清理时采用了和postgresql相同的策略,即创建一个和当前数据库文件相同大小的新数据库文件,之后再将该数据库文件中的数据有组织的导入到新文件中,其中已经删除的数据块将不会被导入,在完成导入后,收缩新数据库文件的尺寸到适当的大小。该命令的执行非常简单,如:
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论