2016-11-19 115 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表中的列上創建索引是一個優點。