我的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 taking very long the first time it runs的东西
假设我的搜索变量是'test',MySQL会缓存带有变量'test‘的查询吗?这样下一次我搜索“test”时,结果就会很快返回。
或者,不管搜索变量是什么,它都会缓存实际的搜索查询,以便快速返回所搜索的内容?
解释:
1简单表全文价格,FULLTEXT_product_name FULLTEXT_product_name 0 NULL 1使用where;使用文件排序
发布于 2016-03-03 21:18:39
在SQL_CACHE上试试这个
select SQL_CACHE
id,product_name,description,price,image,colourfrom table where MATCH (product_name) BY (:search)和priceBETWEEN :mincost AND :maxcost ORDER BYpriceASC LIMIT :start,:limit
https://stackoverflow.com/questions/35773035
复制相似问题