我正在做一些維基百科的頁面數據的測試。這包括約700萬線看起來像這樣:爲什麼MongoDB和MySQL比grep慢?
es London 13 173367
第三列是伯爵,我想跨具有相同的名稱(第2列)的文章總結這一點。因此,在命令行:
paste -sd + <(grep ' London ' pagecounts | cut -d ' ' -f 3) | bc
偉大的工程,並採取0.53s
我認爲使用DB查詢信息會更快,所以我裝這一切爲的MongoDB數據庫,則:
db["pagecounts"].aggregate({
$match: { "article": "London" }
}, {
$group: { _id: "London", "total": { $sum: "$count" } }
});
這工作,但需要一個可怕的8.96s
困惑和失望,我轉身到MySQL:
SELECT SUM(count) FROM pagecounts WHERE article='London';
歷時5.08s
我不知道數據庫的內部了很多,但我不會曾經認爲像grep
這樣的命令行工具在這類事情上會更快。這是怎麼回事?什麼可以改進?
UPDATE
至於塞勒斯和邁克爾建議,建立和指標做出這樣快:〜0.002s。
數據庫提供了許多命令行工具沒有的功能。特殊用途工具(grep)在特定任務上勝過數據庫並不奇怪。 – 2015-04-06 10:50:13
嘗試[添加索引](http://dev.mysql.com/doc/innodb/1.1/en/innodb-create-index-examples.html)到mysql數據庫中的「article」列,以避免滿表掃描。 – Cyrus 2015-04-06 11:09:54
同樣適用於MongoDB - 你想索引城市名稱來加快速度。 – wdberkeley 2015-04-07 16:50:51