我是一個MongoDB的首發,我有一個小問題 一個簡單的查詢,如:慢的MongoDB用一個簡單的查詢
db.table.find ({ "text" : /a/ , "nb_ret" : { "$gt" : 2 } })
了像5分鐘給出結果
在我的數據庫之前,我有一個像53個百萬行
而我的服務器是:
Intel Xeon E3 1225v2 , 4 c/4 t , 3.2 GHz+ , ram : 32 Go , disk : 2x 2 To SATA
這是正常的嗎?
我是一個MongoDB的首發,我有一個小問題 一個簡單的查詢,如:慢的MongoDB用一個簡單的查詢
db.table.find ({ "text" : /a/ , "nb_ret" : { "$gt" : 2 } })
了像5分鐘給出結果
在我的數據庫之前,我有一個像53個百萬行
而我的服務器是:
Intel Xeon E3 1225v2 , 4 c/4 t , 3.2 GHz+ , ram : 32 Go , disk : 2x 2 To SATA
這是正常的嗎?
您的查詢絕不是一件容易的事,因爲它涉及到對正則表達式進行匹配。
使用新的MongoDB text indices可能會獲得一些改進。例如,
db.table.ensureIndex({"text": "text"})
不一定。文本索引不是針對基於「正則表達式」的查詢的通用解決方案。他們自己有自己的表現處罰,其中一部分是故意的「模糊」匹配。沒有關於意圖的進一步信息,這不應被視爲「解決方案」。 –
該指數不會覆蓋$ gt操作員,或者是 – Sammaye
非常感謝您解決方案是我應該做'2' – user3361965
這不是對任何數據庫的查詢方便,這是一個非常困難的查詢,一個是正則表達式,也我會想象,因爲你有指標的,你有什麼指標?你能解釋一下嗎? – Sammaye
也許你的意思是'/^a /',否則它肯定不容易。或者至少如果結果打算減少'「nb_ret」:{「$ gt」:2}'那麼這應該是您的查詢的第一個參數,其中的複合索引反映了這一點。 –