[英]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
id
,product_name
,description
,price
,image
,colour
,其中MATCH(product_name
)反對(:search)和price
:: mincost和:maxcost ORDER BYprice
ASC LIMIT:開始,:limit
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.