我有一個網站搜索網站的源代碼。但是當數據庫獲得超過100個站點時,mongodb開始工作得更慢。MongoDB變得很慢
這裏是我的代碼:
$arananlar = $db->kaynaklar->find(array("kaynak" => new MongoRegex("/".$kelime."/siU")))->sort(array("_id" => -1))->limit($kactane)->skip($alt);
我有一個網站搜索網站的源代碼。但是當數據庫獲得超過100個站點時,mongodb開始工作得更慢。MongoDB變得很慢
這裏是我的代碼:
$arananlar = $db->kaynaklar->find(array("kaynak" => new MongoRegex("/".$kelime."/siU")))->sort(array("_id" => -1))->limit($kactane)->skip($alt);
的常用方法,以加快搜索是通過添加一個索引。但是當您使用正則表達式時,索引無法提供幫助。索引僅在您確切知道要搜索的內容時纔會對您有所幫助。但是正則表達式要比這複雜得多。他們需要閱讀每個字符串的全部內容(exception: when the regular expression starts with the start-of-string anchor ^
)。
但是,當你不需要正則表達式的全部權力,只能搜索完整的單詞,you can create a text index and use text search。
如果您想知道某個特定查詢是否使用索引,可以使用遊標的explain方法。
不知道'$ kelime'中有什麼,它很難知道發生了什麼。 –