我有数据库.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