2012-10-24 22 views
5

Tôi viết một sql như thếYêu cầu sql dilettante, ai có thể cho tôi biết liệu sql này có hiệu quả không?

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

tôi chạy nó ok trong mysql, nhưng tôi không chắc chắn cho dù đó là hiệu quả. Tôi muốn biết liệu điều này "MATCH (sản phẩm) AGAINST ('bóng rổ bóng rổ')" chạy hai lần?

+0

Sẽ không phải là: ORDER BY sản phẩm DESC làm cùng một công việc? –

+0

@PanagiotisPalladinos, 'MATCH ... AGAINST' có thể trả về mức độ phù hợp của trận đấu. Tuy nhiên, dường như có một số khía cạnh khó khăn cho điều đó. Xem nhận xét thứ hai trên trang tài liệu này: http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html – dan1111

Trả lời

0

Điều này có thể làm việc mà không lo lắng:

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

Nếu bạn không muốn chọn trận đấu cũng bạn sẽ cần phải đặt bí danh trong mệnh đề where. Nhưng bí danh chỉ chạy một lần và lưu trữ kết quả trong "biến"

SELECT uid 
FROM search 
WHERE MATCH(product) AGAINST('football basketball') as imatch 
AND status = 1 
ORDER BY imatch DESC 
Các vấn đề liên quan