优化与MySQL查询的慢速匹配

时间:2016-03-03 13:06:03

标签: php mysql database

我的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'来缓存查询?这样,下次我搜索“测试”时间。结果会很快恢复。

或者它是否会缓存实际的搜索查询而不管搜索变量是什么,以便搜索的内容会快速返回?

说明:

1 简单 表 全文 价格,FULLTEXT_product_name FULLTEXT_product_name 0 空值 1 用在哪里;使用filesort

1 个答案:

答案 0 :(得分:0)

使用SQL_CACHE

尝试此操作
  

选择SQL_CACHE   表格中的idproduct_namedescriptionpriceimagecolour   MATCH(product_name)AGAINST(:搜索)和price BETWEEN   :mincost AND:maxcost ORDER BY price ASC LIMIT:start,:limit