$STH->setFetchMode(PDO::FETCH_COLUMN,0);
$id_list = $STH->fetchAll();
Это действительно быстрее? Местный бенчмаркK:
$ cat 1.php
<?php
$d = new PDO('mysql:localhost');
$qry = 'SELECT SQL_NO_CACHE bar FROM test.foo'; //for completeness sake: foo has 400 rows
$stmt = $d->query($qry);
$stmt->setFetchMode(PDO::FETCH_COLUMN,0);
$check = $stmt->fetchAll();
?>
$ cat 2.php
<?php
$d = new PDO('mysql:localhost');
$qry = 'SELECT SQL_NO_CACHE bar FROM test.foo'; //for completeness sake: foo has 400 rows
$stmt = $d->query($qry);
$check = array();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
while($row = $stmt->fetch()){
$check[] = $row['bar'];
}
?>
$ time (for i in {1..100}; do php 1.php; done;)
real 0m4.507s
user 0m2.392s
sys 0m1.288s
$ time (for i in {1..100}; do php 2.php; done;)
real 0m6.830s
user 0m3.352s
sys 0m2.328s
.. так что, по крайней мере, эта разница скриптов на моем сервере быстрее ...