喜欢
/* 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 .
我建议您在自己的服务器上运行此基准测试,但是,这是我设置的典型结果,对于单行结果:
- PDO::FETCH_ASSOC - 936 毫秒
- PDO::FETCH_BOTH - 948 毫秒
- PDO::FETCH_NUM - 1,184 毫秒
- PDO::FETCH_OBJ - 1,272 毫秒
- PDO::FETCH_LAZY - 1,276 毫秒
对于大型数据集,这些结果是典型的:
- PDO::FETCH_LAZY - 5,490 毫秒
- PDO::FETCH_NUM - 8,818 毫秒
- PDO::FETCH_ASSOC- 10,220 毫秒
- PDO::FETCH_BOTH - 11,359 毫秒
- PDO::FETCH_OBJ - 14,027 毫秒
查看 git hub 上的评论,获取所有行确实改变了测试。
关于php - PDO fetch 语句之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328794/