MySQL sorgu optimizasyonu

1 Cevap php

Burada benim tablo yapısının bir ekran görüntüsü var:

alt text

Sitemde ben arama için iki alan, (ort) şehir için bir tane ve sanayi için bir tane var (branche).

Ben ararsanız: Frankfurt verschierung, en alanına şehir için ben var diyelim: Frankfurt ve alanında sanayi için (branche) I {[var (3)]} herhangi bir sonuç vermez ve benim veritabanında veri var, burada verileri bir ekran kapağı var:

alt text

Ve burada benim sql sorgusu vardır:

$do = $this->select("*, MATCH(`ort`) AGAINST ('{$plz}') AS score")
           ->where('MATCH(`branche`) AGAINST( ? IN BOOLEAN MODE)', $branche)
           ->order('premium DESC, score');

Herhangi bir çözüm?

Update:

$do = $this->select("*,MATCH(`branche`,`ort`) AGAINST ('".$branche." ".$plz."') AS score")
    ->where('MATCH(`branche`,`ort`) AGAINST( ? IN BOOLEAN MODE)', $branche.' '.$plz)
    ->order('premium DESC, score');

Ben AYNI terimleri için arama Şimdi, eğer burada arama sonuçlarından bir resim var, ben bazı sonuçlar elde, ama bu doğru görüntülemek değildir:

alt text

Sadece İLK sonuç diğerleri hakkında ne corect nedir? Neden var?

1 Cevap

Ben kullanarak bu çözmek başardı:

$do = $this->select()
           ->where("`ort` LIKE ?",'%'.mysql_escape_string($plz).'%')
           ->where("`branche` LIKE ?",'%'.mysql_escape_string($branche).'%')
           ->order("premium DESC");