2016-11-19 149 views

回答

9

除非你正在做的事情非常琐碎到CSV,只有这样做一次,SQLite的将是运行速度更快,编码时间,和维护的时间,这将更加灵活

把CSV到的SQLite的主要优点是...

  • 查询与已知的查询语言。
  • 使用灵活的查询语言进行查询。
  • 利用高性能索引。
  • 不必编写和维护并记录和测试一堆自定义查询代码。

你可以看一下这样的费用:

SQLite的

  • 一旦...
    • 创建模式。
    • 将CSV导入SQLite(内置)。
      • This may要求您编写一些代码来转换值。
    • [可选,但推荐]设置索引。
  • 对于每个不同的查询......
    • 不要在SQL查询。

CSV

  • 对于每个不同的查询......
    • 编写特殊代码为您的查询。
    • 文档如何使用这个特殊的代码。
    • 测试您的特殊查询代码。
    • 调试您的特殊查询代码。
    • 运行您的特殊查询代码,必须...
      • 阅读CSV文件。
      • 解析CSV文件。
      • (可选)索引CSV文件。
        • 想出索引方案。
      • 运行您的查询。

请注意,如果您的查询是简单的解析和运行可以一起发生。就像“查找字段5大于10的所有列”。


人们很容易忘记,即使你使用一个库做的CSV解析,有编码和维护成本编写特殊的代码来查询一个CSV文件。 每个查询必须进行编码,测试和调试。 每个特殊情况或选项必须进行编码,测试和调试。由于它是你制作的所有特殊材料,因此没有任何约定可以遵循。来使用您的查询程序的人必须了解它的功能和工作原理。如果他们想做什么甚至略有不同的事情,他们(或你)必须进入代码,理解它,修改它,测试它,调试它并记录它。这会产生很多支持请求。

相比之下,SQLite要求您在SQL查询之外编写很少或没有特殊代码。 SQL是一种众所周知的查询语言。你可以说“这是一个SQLite数据库”,很可能人们会知道该怎么做。或者,他们会去学习SQL,这是一般适用的知识。而学习你的特殊CSV查询程序是一次性的知识。

如果人们想要运行一个查询,那么您并没有预料到他们可以自己编写SQL。你不需要被打扰,而且他们也不需要拼出一堆代码。

最后,SQLite的查询时间将比使用索引表的索引好得多,而不是你或我可能写的东西。 SQLite是一个由许多数据库专家协作的数据库。您可能不会超越他们用C编写的精心优化的代码。即使您可以略微提高性能,don't you have better things to do

0

一个明显的好处是,你不能索引一个CSV文件。如果您必须使用大型数据集的子集,那么在sqlite表中的列上创建索引是一个优点。