2016-03-20 6 views
1

match againstを検索し、次にlisting_time列で検索したいと考えています。関連性の検索はうまくいきますが、listing_timeカラムを追加すると、検索結果はランダムな結果に見えます。MySqlと関連性の高い順番と一致し、別の列

これは私のsql

SELECT title, listing_time, match(description) against('+clip' in boolean mode) as rel 
FROM product order by rel desc 

これは0.2秒で86件の結果をもたらし、すべての結果がrelevance 1を持っています。すばらしいです。

しかし、私は追加のcloumn

FROM product order by rel, listing_time desc 

と同じ検索をしようとしたとき、私は27秒で1000の結果を取得し、その妥当性はすべての場所です。うわー。

これを正しく行うにはどうすればよいですか?関連する結果が必要なので、listing_timeで注文してください。

答えて

0

私はorder byをするためにあなたが意図していること推測しています:

order by rel desc, listing_time desc 
-------------^ 

ascdesc各キーに適用されます。

あなたの質問には、2つの結果セットが異なることが示唆されていません。つまり、クエリが正確に同じではないと思います(例えば、joinまたはwhereの句のため)。

+0

「TOP X」または「FETCH FIRST X ROWS ONLY」または「LIMIT X」は、順序の変更だけで異なる結果を与えることもできます。 – Hogan

+0

@Hogan。 。 。 MySQLはどちらの構文もサポートしていません。 MySQLで使用されるバージョンは 'limit'で、' order by'節の後になります。 –

+0

提案は結果を変更しません。そして、relをdesc、listing_time descに変更する以外は同じクエリです。 – Eddy

関連する問題