我有大量的记录(比如大约1000到1亿),我希望能够查询。
这是一个研究项目,数据库大部分是只读的,我一次只需要一个连接。我希望查询速度相当快。
SQLite是否是出于此目的的合理选择?
答案 0 :(得分:2)
我对SQLite的体验是,对于大型记录集,它可能会非常慢,具体取决于您构建查询的方式。如果您的数据被去规范化并且您可以通过查询单个表与其主键,那么它是可接受的快速,但如果您的数据完全规范化并且您的查询涉及多个连接,那么它可能比客户端 - 服务器数据库慢得多。
SQLite的主要优势在于它的小尺寸和单一文件特性使其易于在应用程序中嵌入分发。虽然这对你来说似乎不是一个要求,但我认为你最好还是选择别的东西。如果你使用Windows,MySQL或Postgres,SQL Server Express是个不错的选择。
答案 1 :(得分:2)
正如之前的帖子所指出的,SQLite是一个很棒的SQL库,但是当数据集非常大时,它可能会耗尽气体。 Berkeley DB最近推出了一个完全与SQLite兼容的SQL API。它被添加到Berkeley DB中,以便为SQLite用户提供两全其美的优势 - SQLite的普遍性,简单性和易用性以及Berkeley DB的并发性,可伸缩性和可靠性。
Berkeley DB SQL API旨在成为SQLite应用程序的直接替代品,特别是那些特别需要Berkeley DB功能和原生SQLite不具备的可伸缩性的应用程序。您可以在Berkeley DB SQL API documentation中详细了解相关信息。
免责声明:我是Berkeley DB的产品经理之一,所以我有点偏颇。但是您的使用案例是我们与Hipp博士和SQLite开发人员合作以将SQLite API与Berkeley DB存储管理器相结合的原因之一。它允许SQLite应用程序开发人员将他们的应用程序带入具有附加功能的新领域,同时保持与其现有实现的兼容性。
如果您有任何疑问或者我们可以提供哪些帮助,请告诉我们。您可以在OTN Forums上找到Berkeley DB开发人员的活跃社区。
祝你的项目好运。
问候,
戴夫
答案 2 :(得分:1)
当涉及数百万条目时,SQLite并不是特别快。结果将根据您放置的内容,架构,列数,索引而有所不同。
SQLite的优势(特别是在你的情况下)是如此轻松,以至于尝试使用某些数据可能值得花费时间和精力。它非常简单,其理想的用例确实适用于单个用户访问。
我想尝试使用代表性数据量进行构建(您可以从命令行从CSV文件导入,或者使用其中一个可用的包装器)。如果速度不能令人满意,你可能不得不切换到功能更强大的东西,但不可否认的是,设置也就像MySQL一样。