SQLite大型数据库处理



我有数据库.db文件,要访问它,我使用SQLite

数据库的文件大小约为100 GB,并且有超过300个表

我的要求是我需要准备不同的查询来检查交叉表记录。

表使用主键和外键连接

更快地找到查询输出的最佳方法是什么?

在阅读了一些文章后,我知道我需要运行

  • 分析命令
  • 并对需要的列进行索引

我还能做什么吗?

当数据不适合任何缓存时,查询的执行时间由从磁盘读取所有数据所需的时间决定。

索引有助于减少需要读取的数据量(索引中的二进制搜索只需要读取少数条目,而扫描表必须读取所有行)。

没有其他方法可以减少数据量,除非重写查询以返回更少的数据,或者不进行不必要的查找。这始终取决于实际查询。

就像凌天云写的那样,你的问题太宽泛了。您需要分析运行的查询,以找出如何最好地优化数据库和索引。如果您需要以多种不同的方式读取数据,这不是一项微不足道的任务。例如,请记住,添加索引总是要权衡取舍的。你会更快地读取数据,但更新会更慢。试着从搜索这个网站和网站上的教程等开始,给你一个起点。然后,如果你有更具体的问题,请回来这里提问。

此外,正如凌天云和其他人所暗示的,SQLite不适合这么大的数据库。我建议你换一个不同的数据库管理器。

来自SQLite网页(我的亮点):

SQLite的建议用途:

  • 应用程序文件格式。而不是使用fopen()将XML、JSON、CSV或某些专有格式写入您的应用程序,使用SQLite数据库。你将避免书写和对解析器进行故障排除,您的数据将更容易访问跨平台,您的更新将是事务性的。(更多…)

  • 小工具数据库。SQLite是手机、PDA、MP3播放器、机顶盒和其他设备中数据库引擎的热门选择电子产品。SQLite的代码占用空间小,效率高内存、磁盘空间和磁盘带宽的使用非常可靠,并且不需要数据库管理员进行维护。

  • 网站数据库。因为它不需要配置,并且将信息存储在普通磁盘文件中,所以SQLite是一个流行的选择,因为数据库以支持中小型网站。

  • 企业RDBMS的替身。SQLite通常被用作企业RDBMS的代理,用于演示或测试。SQLite速度快,不需要任何设置,这需要大量的时间测试带来的麻烦,使演示变得活泼易用启动

http://www.sqlite.org/features.html

此外:

SQLite 的适当用途

SQLite无法直接与其他SQL数据库引擎进行比较,例如作为Oracle、PostgreSQL、MySQL或SQL Server,因为SQLite正在尝试解决一个完全不同的问题。

其他SQL数据库引擎努力实现企业数据。它们强调可扩展性、并发性,集中化和控制。

另一方面,SQLite努力为单个应用程序和设备。SQLite强调经济性,效率、可靠性、独立性和简单性。

SQLite并非旨在与Oracle竞争。SQLite旨在与fopen()竞争。

http://www.sqlite.org/whentouse.html

最新更新