当前位置: 首页 > 知识库问答 >
问题:

mysql_query与mongoDB等效

叶嘉颖
2023-03-14

我正在尝试编写一个PHP基准以便比较一些RDBMS、NewSQL和NoSQL。这个脚本只是执行查询并测量执行时间。

$start = microtime(true);
$result = mysql_query($SQL);
$end = microtime(true);

但是在mongodb-php中,函数find()返回一个游标

$start = microtime(true);
$collection = $this->_db->selectCollection($collection);
$cursor = $collection->find($query);
$end = microtime(true);

$cursor$result是否等价(时间/数据成本)?游标不加载数据,我必须迭代游标才能加载数据…为什么在MySQL和mongoDB之间执行查询的时间如此不同或者仅仅是mongoDB的岩石...

我想知道将我的代码更改为:

$start = microtime(true);
$result = mysql_query($SQL);
while ($row = mysql_fetch_row($result)) {}
$end = microtime(true);
$start = microtime(true);
$cursor = $collection->find($query);
foreach ($cursor as $doc) {}
$end = microtime(true);

共有1个答案

爱刚捷
2023-03-14

运行->find()实际上只是返回光标。在获取第一个结果之前,查询不会执行。此时,驱动程序将发出查询。这允许您用->limit()和->skip()这样的东西来修改光标。所以是的,对结果集进行迭代会更公平。

是的,迭代mongoDb游标,数据将从mongoDb服务器提取。没有像MySQL那样的无缓冲查询(它同时允许这两种查询)。当然,MongoDB也会在内存中保存这些数据--尤其是在您前后执行两次的情况下。

 类似资料:
  • 本文向大家介绍MongoDB特点与体系结构等简介,包括了MongoDB特点与体系结构等简介的使用技巧和注意事项,需要的朋友参考一下 1.1什么是MongoDB MongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似JSON 的 BSON

  • 问题内容: 因此,查找记录时,MongoDB默认为“ AND”。例如: 上面的查询找到了> = 30 AND <= 40岁的用户。 我如何找到年龄<= 30 或 > = 40岁的用户? 问题答案: 在不久的将来会有一个or运算符。每晚的Mongodb版本已经有$ or。您还可以使用$ where并使用JavaScript表示or。 参见http://groups.google.com/group/

  • 我只是更新我的服务器。今天显示了一个错误 deprecated:mysql_query():mysql扩展是不推荐的,并将在>future中删除:使用mysqli或PDO代替C:\wamp\www\work\db\dbfields-copy.php中的第33行 我创建了2列(name&address),需要插入var的值($name&$address)。

  • 我按照https://docs.atlas.mongodb.com/security-vpc-peering/创建了VPC对等互连并检查了激活的双方(GCP和Atlas)。我的GCP VPC本机已启用。 MongoDB cidr192.168.0.0/16 GCP pod ip10.4.0.0/16 我将10.4.0.0/16添加到Atlas白名单中,并尝试通过其中一个POD中的专用连接字符串进行

  • 当我执行下面的PHP代码时,我得到了一个致命的错误,我不知道如何解决它。 谢谢你的帮助 错误 PHP致命错误:未捕获错误:调用/Applications/MAMP/htdocs/lprapp/config中未定义的函数mysql_query()。php:23堆栈跟踪:#0{main}抛出到/Applications/MAMP/htdocs/lprapp/config中。php第23行 代码

  • 我想知道是否具有与类似SQL的等效功能。例如,如果我在中有以下查询: 如何在中执行相同的?对于,我将python与一起使用