最近用了mongo,發現個問題,某個集合裡,文檔物件裡有個ctime字段,是MongoDate類型的,我做這樣的查詢db.find().sort({'ctime':-1}) .limit(10),發現是全表掃描了一遍,要想快除非建個{'ctime':-1}的索引
但是用mysql的時候,ctime不建索引,掃描數量也不會很高,因為對資料庫底層不是很了解,希望有大神可以指點一下,或者也許是我mongo使用錯誤,下面是mysql的詳情
要想不掃描全表,索引當然是必須的,不然怎麼知道其他資料裡的ctime就一定不大於找出來的那幾條資料呢。至於MySQL裡,你怎麼就知道它沒有掃描全表呢? MySQL是的資料儲存是緊密的,它掃描的速度要比Mongo快很多,所有在無索引的情況下MySQL很佔優勢。
Mongo的一大優點在於查詢方式豐富,而要展現Mongo這項特點,合理必要的索引是不可或缺的。
要想不掃描全表,索引當然是必須的,不然怎麼知道其他資料裡的ctime就一定不大於找出來的那幾條資料呢。至於MySQL裡,你怎麼就知道它沒有掃描全表呢? MySQL是的資料儲存是緊密的,它掃描的速度要比Mongo快很多,所有在無索引的情況下MySQL很佔優勢。
Mongo的一大優點在於查詢方式豐富,而要展現Mongo這項特點,合理必要的索引是不可或缺的。