我的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
答案 0 :(得分:0)
使用SQL_CACHE
选择SQL_CACHE 表格中的
id
,product_name
,description
,price
,image
,colour
MATCH(product_name
)AGAINST(:搜索)和price
BETWEEN :mincost AND:maxcost ORDER BYprice
ASC LIMIT:start,:limit