![](/img/trans.png)
[英]Speeding up MySQL query searching multiple tables using MATCH AGAINST
[英]match against mysql query against multiple tables with the same fields
當前查詢:
select * from `table1` where MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) AND `price` BETWEEN 0 AND 1000 order by MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) desc, `price` DESC LIMIT 0, 30
如何在具有相同字段的多個表上運行上述查詢? 例如table2,table3,table4
如果將所有表中的所有數據合並到1個單個表而不是多個表中,查詢會更快嗎? 還是完全沒有區別?
第一個問題的答案 :您可以在MySQL中使用JOINS
,它可以將表結合起來。
回答第二個問題 :
一種方式 :
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1, table2
WHERE
table1.foreignkey = table2.primarykey
AND (some other conditions)
第二種方式:
SELECT
table1.this, table2.that, table2.somethingelse
FROM
table1 INNER JOIN table2
ON table1.foreignkey = table2.primarykey
WHERE
(some other conditions)
WHERE
語法是面向關系模型的,其中INNER JOIN
是您應該使用的ANSI語法。
一旦需要開始向查詢中添加更多表,使用WHERE
的第一個查詢就會變得更加混亂,難以閱讀且難以維護。 想象一下在四個或五個不同的表上執行相同的查詢和聯接類型……這是一場噩夢。
但是,取決於查詢優化器,它們對計算機可能具有相同的含義。
您應該始終編寫可讀性強的代碼。
也就是說,如果這是內置關系,請使用顯式聯接。 如果要匹配弱相關數據,請對從JOINS
獲得的結果集使用where
子句。
希望這可以幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.