首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_query等价于mongoDB

mysql_query等价于mongoDB
EN

Stack Overflow用户
提问于 2012-04-23 11:36:05
回答 1查看 516关注 0票数 0

我正在尝试编写一个php benchmark,以比较一些关系数据库管理系统、NewSQL和NoSQL。这个脚本只执行查询并测量执行时间。

对于mysql,我只需使用:

代码语言:javascript
复制
$start = microtime(true);
$result = mysql_query($SQL);
$end = microtime(true);

我没有为我的基准获取数据。

但是使用mongodb-php,函数find()返回一个cursor

代码语言:javascript
复制
$start = microtime(true);
$collection = $this->_db->selectCollection($collection);
$cursor = $collection->find($query);
$end = microtime(true);

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

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

代码语言:javascript
复制
$start = microtime(true);
$result = mysql_query($SQL);
while ($row = mysql_fetch_row($result)) {}
$end = microtime(true);

代码语言:javascript
复制
$start = microtime(true);
$cursor = $collection->find($query);
foreach ($cursor as $doc) {}
$end = microtime(true);

最后,是否可以说每次迭代mongodb游标数据时都直接从mongodb服务器而不是从计算机内存获取?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-23 12:16:19

运行->find()确实只返回游标。在获取第一个结果之前,查询不会执行。此时,驱动程序将发出查询。这允许您使用->limit()和->skip()之类的内容修改游标。因此,对结果集进行迭代也会更公平。

是的,在mongoDb游标上迭代,数据将从MongoDB服务器获取。没有没有缓冲的查询,比如使用MySQL (这两者都允许)。当然,MongoDB也会将这些数据存储在内存中--特别是如果您只在彼此之间做了两次的话。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10279749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档