我的 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 简单的 table 全文 价格,FULLTEXT_product_name 全文_产品名称 0 无效的 1个 在哪里使用;使用文件排序
最佳答案
用 SQL_CACHE
试试这个
select SQL_CACHE
id
,product_name
,description
,price
,image
,colour
from table where MATCH (product_name
) AGAINST (:search) ANDprice
BETWEEN :mincost AND :maxcost ORDER BYprice
ASC LIMIT :start, :limit
关于php - 针对 MySQL 查询优化慢速匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773035/