LEFT JOIN veya DÜZENLİ JOIN, ve nasıl bir diziye MySQL tablo karşılaştırmak?

1 Cevap php

T1, T2, T3, T4, T5, T6: altı tablolar var. Main_table: Ve ben de bir ana tablo var. TOPLAM 7 TABLOLAR!

Şimdi, ilanlar arama için SOLR kullanıyorum ve Solr gelen sonuçları bir diziye konur. Dizi Sonuçlar ID şunlardır: MySql s: ben agains aynı kimliği eşleştirmek için kullanabilirsiniz nrs.

MySql TÜM tablo, ilk sütun classified_id denir.

Bir diziye s ve classified_id aynı olduğu nihayet (araba tablo olan) tablo t1 her şeyi eşleşecek MySQL ana tablosunu karşılaştırın: "arabalar" için kullanıcı arar, ardından Solr tüm araba ilanları bulacaksınız varsa, id koydu her iki tabloda.

SOLR results dizisi ilk, sonra, imploded:

SELECT * FROM classified, t1 WHERE classified.ad_id IN ('$solr_id_arr_imploded') AND classified.classified_id=t1.classified_id

Benim Q, bu bunu nasıl olduğunu? Bu nasıl burada JOIN veya LEFT JOIN kullanmak gerekir mi? Dizi karşılaştırarak daha hızlı bir yolu var mı?

hiçbir araç-ilanlar varsa tablo t1 boş olabilir ...

SOLR 10000 sonuç döndürür sorgu örneğin, very very uzun haline gelebilir, unutmayın, o bu gibi görünebilir 10000 id numaralarını bir dizi iade edilecekti: bmw_m3_low_miles_8948939

Teşekkürler

1 Cevap

Alternatif bir IN, geçici bir tablo oluşturmak kimlikleri ile doldurun ve bir iç bu konuda katılmak yapmaktır. Diğer tabloları classified_id bir dizin olduğundan emin olun. Seçeneklerini karşılaştırmak için, use EXPLAIN .