首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对MySQL查询优化慢匹配

针对MySQL查询优化慢匹配
EN

Stack Overflow用户
提问于 2016-03-03 21:06:03
回答 1查看 285关注 0票数 1

我的MyISAM表有315,000行。我在product_name上有一个全文索引。基数为0。

代码语言:javascript
复制
query_cache_size = 20M
query_cache_type = 1
query_cache_limit =  2M

我的问题是:

代码语言:javascript
复制
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;使用文件排序

EN

回答 1

Stack Overflow用户

发布于 2016-03-03 21:18:39

SQL_CACHE上试试这个

select SQL_CACHE idproduct_namedescriptionpriceimagecolour from table where MATCH (product_name) BY (:search)和price BETWEEN :mincost AND :maxcost ORDER BY price ASC LIMIT :start,:limit

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35773035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档