最近用了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这一特点,合理必要的索引是必不可少的。