2012-10-24 11 views
5

私はそのこのSQLが効率的かどうかを教えてくれるsql dilettanteを求めてください。

SELECT uid 
    FROM search 
WHERE MATCH(product) AGAINST('football basketball') 
    AND status=1 
ORDER BY MATCH(product) AGAINST('football basketball') DESC 

ようなSQLを書いています、私は、MySQLの[OK]を実行しますが、私はそれが効率的であるかどうかを確認していません。この「MATCH(製品)AGAINST(「サッカーバスケットボール」)」が2回実行されているかどうかを知りたいですか?

+0

ORDER BY製品DESCは同じ仕事をしますか? –

+0

@PanagiotisPalladinos、 'MATCH ... AGAINST'はマッチの関連性を返すことができます。しかし、それにはいくつかの面倒なことがあるようです。このドキュメントページの2番目のコメントを確認してください:http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – dan1111

答えて

0

これは心配せずに働くかもしれない:あなたにもマッチを選択したくない場合は

SELECT uid, MATCH(product) AGAINST('football basketball') as imatch 
    FROM search 
WHERE imatch 
    AND status=1 
ORDER BY imatch DESC 
0

あなたは、where句で別名を配置する必要があります。しかし、エイリアスは一度だけ実行され、結果は "変数"に格納されます

SELECT uid 
FROM search 
WHERE MATCH(product) AGAINST('football basketball') as imatch 
AND status = 1 
ORDER BY imatch DESC 
関連する問題