ランダムに複数の抽出結果を取得する

CakePHP2で、

‘order’ => ‘rand()’

として検索結果をランダム取得しようとしていたが、生成されたSELECT文には

ORDER BY rand() ASC

と指定されていて、更にEXPLAINで調べてみたところ、見事にExtraの項目に、

Using where; Using temporary; Using file sort

と表示されてしまった。そこで、
「SELECT文ではランダム指定せず、SELECT文の取得結果からランダムでデータを取得」
という方針に変更。

$results = データ取得メソッド();
$resultsNum = count($results); 
$keys = range(0, $resultsNum-1);
shuffle($keys);
$wantedArray = array();
// 必要な件数が3の場合
$i = 0;
foreach ($keys as $key) {
  if ($i == 3) break;
  $wantedArray[] = $results[$keys[$i]];
  $i++;
}