PHP / SQL: ORDER BY veya sort ($ dizi)?

6 Cevap php

Eğer bir PHP komut dosyası daha hızlı hangisi sizce:

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

veya

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

6 Cevap

Ben bile başlamak için bilmiyorum pek çok etkene bağlıdır.

Ama bir kural olarak, veritabanı tarafında sıralama yapmak.

Indeksler, alfabe ve bu, onlar yardım.

Eğer bir php script hızlıdır hangisi sizce:

ORDER BY PHP komut dosyası yürütmek değil - veri PHP komut dosyası tarafından alınmadan önce bu veritabanında yürütür. Bu bilgiçlik görünüyor eğer özür dilemek, ben sadece bunu anlamak emin olmak istiyorum.

Her neyse, ben kullanmak istiyorum nedeni ORDER BY veritabanı indeksler ve veritabanından önbelleğe sayfalara erişimi olmasıdır. PHP sıralama tabii anısına belirlenen verileri sıralar, ancak herhangi bir dizin erişimi yok vardır.

Sipariş alan endeksli ise, muhtemelen SQL sorgusu söyleyebilirim. Eğer değilse, ben emin değilim, ama satır bir absürd sayıda uğraşıyoruz sürece aşırı fark iki şekilde olacak hayal bile edemiyorum.

ORDER BY hemen hemen her zaman daha hızlı olacaktır.

Benim düşünceme göre, hiçbir şey aslında bunu gerçekten, gerçekten emin şey zamanlama yener:

$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";

Ilk sorguda bir LİMİT ve satır kümesi varsa sorgu sınırı olmadan maç olacak LİMİTİ daha büyük olduğu, daha sonra sorguya TARAFINDAN SİPARİŞ KESİNLİKLE hızlıdır.

İşte bu tüm 10.000 satır almak ve onlara kendinizi sıralamak için daha, bir 10.000 satır tablodan iyi 50 satır gerekiyorsa, sizin için veritabanı tür olması çok daha hızlı, demek, ve sadece bu üst 50 satır dönmek için PHP. Bu gerçek dünya uygulamalarında ne olacağı büyük çoğunluğu muhtemelen temsilcisi

Herhangi bir olgu PHP sıralama bile karşılaştırılabilir olduğu tüm varsa, bunlar seyrek demektir.

Ayrıca, SQL sıralama çok daha güçlü olduğu - birden fazla sütun, alt sorgular, toplama işlevleri vb dönüş değerleri sıralamak için önemsiz bulunuyor