簡體   English   中英

針對MySQL查詢優化慢速匹配

[英]Optimizing slow match against MySQL query

我的MyISAM表有315,000行。 我在product_name上有全文索引。 基數為0。

query_cache_size = 20M
query_cache_type = 1
query_cache_limit =  2M

我的查詢是:

select `id`,`product_name`,`description`,`price`,`image`,`colour` 
from table 
where MATCH (`product_name`) AGAINST (:search) 
AND `price` BETWEEN :mincost 
AND :maxcost 
ORDER BY `price` ASC LIMIT :start, :limit

有時我會嘗試搜索,大約需要20-40秒,通常是我第一次嘗試或嘗試搜索10分鍾以上。 其他時候,它將在約2秒或更短的時間內返回結果。 我猜這與緩存有關嗎? 類似於Query第一次運行會花費很長時間的事情

可以說我的搜索變量是“ test”,MySQL是否使用變量“ test”來緩存查詢? 這樣,下次我搜索“測試”時,結果將迅速返回。

還是它會緩存實際的搜索查詢,而不管搜索變量是什么,以便所搜索的內容都能快速返回?

說明:

1 SIMPLE表全文價格,FULLTEXT_product_name FULLTEXT_product_name 0 NULL 1使用位置; 使用filesort

嘗試使用SQL_CACHE

從表中選擇SQL_CACHE idproduct_namedescriptionpriceimagecolour ,其中MATCH( product_name )反對(:search)和price :: mincost和:maxcost ORDER BY price ASC LIMIT:開始,:limit

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM