PHP / SQL: ORDER BY или sort ($ array)?

Как вы думаете, быстрее в PHP-скрипте:

$query = "SELECT... FROM ... ORDER BY first_val"; 

или

 while($row = odbc_fetch_array($result)) $arrayname[] = array( "first_key" => $row['first_val'], "second_key" => $row['second_val'], etc... ); sort($arrayname); 

Это зависит от многих факторов, о которых я даже не знаю, с чего начать.

Но, как правило, вы выполняете сортировку по стороне базы данных.

Индексы, сортировки и все это помогают.

Как вы думаете, быстрее в php-скрипте:

ORDER BY не выполняется в PHP-скрипте – он выполняется в базе данных, прежде чем данные будут восстановлены скриптом PHP. Извиняюсь, если это кажется педантичным, я просто хочу убедиться, что вы это понимаете.

Во всяком случае, причина, по которой я буду использовать ORDER BY заключается в том, что база данных имеет доступ к индексам и кэшированным страницам из базы данных. Сортировка в PHP, конечно, сортирует данные в памяти, но не имеет доступа к любому индексу.

Если упорядоченное поле индексируется, я бы сказал, вероятно, SQL-запрос. Если нет, я не уверен, но я не могу представить, что это будет слишком заметно в любом случае, если вы не имеете дело с абсурдно большим количеством строк.

ORDER BY будет почти всегда быстрее.

На мой взгляд, ничто не сравнится с фактическим временем, потому что вы действительно, действительно знаете наверняка:

 $time_start = microtime(true); // Try the ORDER BY and sort($array) variants here $time_end = microtime(true); $time = $time_end - $time_start; echo "It took $time seconds"; 

Если в первом запросе есть LIMIT, а набор строк, который будет соответствовать запросу без LIMIT, намного больше, чем LIMIT, тогда ORDER BY по запросу ОПРЕДЕЛЕННО быстрее.

То есть, если вам нужны лучшие 50 строк из таблицы из 10 000 строк, гораздо быстрее иметь сортировку базы данных для вас и возвращать только те из 50 верхних строк, что она должна извлекать все 10000 строк и сортировать их самостоятельно PHP. Это, вероятно, является представителем подавляющего большинства того, что произойдет в реальных приложениях

Если вообще есть случаи, когда сортировка на PHP даже сопоставима, их немного и далеко.

Кроме того, сортировка SQL намного эффективнее – тривиально сортировать по нескольким столбцам, подзапросам, возвратным значениям агрегатных функций и т. Д.