php - PDO fetch 语句之间是否存在性能差异?

标签 php pdo fetch

喜欢

/* Exercise PDOStatement::fetch styles */
print("PDO::FETCH_ASSOC: ");
print("Return next row as an array indexed by column name\n");
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
print("\n");

print("PDO::FETCH_BOTH: ");
print("Return next row as an array indexed by both column name and number\n");
$result = $sth->fetch(PDO::FETCH_BOTH);
print_r($result);
print("\n");

print("PDO::FETCH_LAZY: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_LAZY);
print_r($result);
print("\n");

print("PDO::FETCH_OBJ: ");
print("Return next row as an anonymous object with column names as properties\n");
$result = $sth->fetch(PDO::FETCH_OBJ);
print $result->NAME;
print("\n");

默认是 FETCH BOTH,我想知道当我要获取大量数据时 FETCH ASSOC 是否更快;还是一样?

谢谢

最佳答案

我想知道这个问题的答案,所以我写了一个快速 benchmark script .

我建议您在自己的服务器上运行此基准测试,但是,这是我设置的典型结果,对于单行结果:

  1. PDO::FETCH_ASSOC - 936 毫秒
  2. PDO::FETCH_BOTH - 948 毫秒
  3. PDO::FETCH_NUM - 1,184 毫秒
  4. PDO::FETCH_OBJ - 1,272 毫秒
  5. PDO::FETCH_LAZY - 1,276 毫秒

对于大型数据集,这些结果是典型的:

  1. PDO::FETCH_LAZY - 5,490 毫秒
  2. PDO::FETCH_NUM - 8,818 毫秒
  3. PDO::FETCH_ASSOC- 10,220 毫秒
  4. PDO::FETCH_BOTH - 11,359 毫秒
  5. PDO::FETCH_OBJ - 14,027 毫秒

查看 git hub 上的评论,获取所有行确实改变了测试。

关于php - PDO fetch 语句之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328794/

相关文章:

javascript - 在 Pycharm 中,我无法获取 JSON 文件并且无法安装 fetch

javascript - 通过 JS 或 PHP 从新的 youtube 2015 下载视频

php - 表单上的两个提交按钮单击后每个按钮都会重定向到不同的页面?

php - Mysql 查询选择具有不同列值的结果

php - PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

php pdo更新语句

php - mysql fetch array 如果没有结果显示消息

php - Paypal 快速结帐流程问题

php - 加载 PHP 的 PDO 驱动程序的正确方法?

ios - 创建新对象时查询核心数据的特定属性,如果存在则返回对象,如果不存在则创建一个新对象