怎樣加快sqlite3的閲讀速度?

想讀一個1,000,000隻record的DB
最好15秒內完成....
THX

load 入 memory 應該會快啲呱

TOP

load 入 memory 應該會快啲呱
pekkle 發表於 2016-11-6 20:50

佢個 case 似乎要計埋由 disk 抄落 ram 既時間
應該 ssd 都要考慮
但係唔知讀完有咩用
Loop 讀緊既時候要做乜
sequential read 似乎無必要用 sqlite...

TOP

佢個 case 似乎要計埋由 disk 抄落 ram 既時間
應該 ssd 都要考慮
但係唔知讀完有咩用
Loop 讀緊既時候要 ...
winstercafe 發表於 2016-11-6 20:58

啱,樓主冇講清楚想做乜,好難搞。齋load個大DB做乜?要select record快其實係要tune條sql好啲。

TOP

本帖最後由 luckiejacky 於 2016-11-6 22:15 編輯

Sorry 我搞錯左
原來個program是OK的
原本個db都唔系load得好慢
我只是試下從Visual Studio 2010 compile試下work唔work
但我發現個select query停左在32768 records
為什麼呢?
  1.         int rc;
  2.         std::string sql = "SELECT * from Costs";

  3.         sqlite3_stmt *stmt = NULL;
  4.         rc = sqlite3_prepare_v2(db, sql.c_str(), -1, &stmt, NULL);
  5.         if (rc != SQLITE_OK)
  6.                 throw string(sqlite3_errmsg(db));


  7.         rc = sqlite3_step(stmt);
  8.         long row = 0;
  9.         while (rc == SQLITE_ROW)
  10.         {                 
  11.                 int a = sqlite3_column_int(stmt, 0);
  12.                 int b = sqlite3_column_int(stmt, 1);
  13.                 float c = sqlite3_column_double(stmt, 2);

  14.                 cout << "Row " << row++ << "              " << "\r";

  15.                 NodePair p(a, b);

  16.                 costs.insert(std::make_pair(p, c));

  17.                 rc = sqlite3_step(stmt);
  18.                 if (rc != SQLITE_ROW && rc != SQLITE_DONE) {
  19.                         string errmsg(sqlite3_errmsg(db));
  20.                         sqlite3_finalize(stmt);
  21.                         cout << "Error Reading Costs" << endl;
  22.                         throw errmsg;
  23.                 }

  24.         }

  25.         sqlite3_finalize(stmt);
複製代碼


THX

TOP

回覆 5# luckiejacky RC 係 int?

TOP

回覆  luckiejacky RC 係 int?
pekkle 發表於 2016-11-7 07:56


佢明明寫左rc係int.. 咁rc當然係int...

TOP

回覆 7# 7h1r733n

int 32768 正常吖

TOP

回覆  7h1r733n

int 32768 正常吖
pekkle 發表於 2016-11-7 15:09

但佢話visual c++.. visual c++ int好似係4byte..

https://msdn.microsoft.com/en-us/library/s3f49ktz.aspx

TOP

係喎,睇錯咗

TOP