Rafineri Arama Sonuçları [PHP / MySQL]

2 Cevap php

Kullanıcıların bir sorguyu gönderdikten sonra set sonuçlarını çimdik izin arama bölmeleri bir dizi oluşturma. Biz sonuçları belli alanlarda sık görülen değerleri çekmek ve onların popülerlik sırasına onları görüntülemek - Tüm eBay bu tür bir şey gördüm. Bizim sonuçlarımızda satırların bir sürü 2009 yılında oluşturulan Yani, biz "2009" tıklayın ve o yıl yaratılan sadece satırları görmek mümkün olacak.

Bu filtreler uygulayarak en etkili yolu sizce nedir? Benim çalışma çözeltisi gibi ekstra argümanlar, eşleşmiyor sonuçları girişleri atmak oldu:

while($row = mysql_fetch_assoc($query)) {
    foreach($_GET as $key => $val) {
        if($val !== $row[$key]) {
            continue 2;
        }
    }
    // Output...
}

Filtreler ekleyerek sorguyu değişmez Bu yöntem umarım sadece bir kez geçerli veritabanını sorgulamak gerekir - MySQL veri kümesini önbelleğe ve yeniden kullanabilirsiniz. Üzerinde olumsuz bir baş ağrısı biraz pagination yapar.

Açık alternatif ilk sorgu gibi bir şey içine herhangi bir ek kriterleri oluşturmak olacaktır:

$sql = "SELECT * FROM tbl MATCH (title, description) AGAINST ('$search_term')";
foreach($_GET as $key => $var) {
    $sql .= " AND ".$key." = ".$var;
}

Bunun yerine bunu iyi nedenler var mı? Ya da daha iyi seçenekler tamamen vardır? Belki geçici bir tablo? Herhangi bir düşünce çok takdir!

2 Cevap

Devam edin ve veritabanını yeniden sorgulamak, her şeyi birlikte tutmak ve sayfalama kabuslar azaltmak olacaktır.

AJAX ile bu yapıyorsun?

Memory Storage Engine bir seçenek kullanıyor?

Eğer sorguları büyük miktarda (ve büyük demek) yapıyorsanız, bellek depolama motorunu kullanarak zamandan tasarruf edebilirsiniz. (Bu küçük bir miktar olacak olsa)