Php 针对MySQL查询优化慢速匹配

Php 针对MySQL查询优化慢速匹配,php,mysql,database,Php,Mysql,Database,MyISAM表有315000行行。我在product\u 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)

MyISAM表有
315000行
行。我在
product\u 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秒或更短的时间内返回结果。我猜这与缓存有关?类似于

假设我的搜索变量是“test”,MySQL是否使用变量“test”缓存查询?这样下次我搜索“测试”时,结果会很快返回

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

说明:

一, 简单的 桌子 全文索引 价格,全文\产品\名称 全文\产品\名称 0 无效的 1.
在何处使用;使用文件排序

尝试使用
SQL\u缓存

选择SQL\U缓存
标识
产品名称
说明
价格
图像
颜色
来自表格 其中(
product\u name
)与(:search)和
price
之间的匹配 :mincost和:maxcost订单依据
price
ASC限额:开始,:限额


使用
SQL\u缓存尝试此操作

选择SQL\U缓存
标识
产品名称
说明
价格
图像
颜色
来自表格 其中(
product\u name
)与(:search)和
price
之间的匹配 :mincost和:maxcost订单依据
price
ASC限额:开始,:限额


张贴解释选择
id
product\u name
description
price
image
color
,从表中选择(
product\u name
)与(:search)匹配的(
price
):mincost与:maxcost ORDER BY
price
,根据
ASC LIMIT:start,:Limit您对Mysql的“解释”语法有多熟悉?您可以很好地了解数据库是如何实际运行您的查询的。是的,Mysql可以缓存一些查询,缓存量在Mysql配置中确定。一个简单的问题-您已经为您的表设置了全文索引-您已经为price列编制了索引了吗?你们有价格指数吗<代码>更改表t添加键(价格)
已经有了一个价格树尝试先用价格搜索,然后用文本搜索,所以在解释后移动匹配从匹配的表中选择
id
产品名称
说明
价格
图像
颜色
product\u name
)根据(:search)和
price
在:mincost和:maxcost之间按
price
ASC LIMIT:start,:LIMIT排序您对Mysql的“解释”有多熟悉语法-您可以很好地了解数据库实际上是如何运行查询的。是的,Mysql可以缓存一些查询,缓存量在Mysql配置中确定。一个简单的问题-您已经为表设置了全文索引-您已经为price列编制了索引吗?您是否有关于price的btree索引?
ALTER table t ADD钥匙(价格)
已经有了一个价格树尝试先用价格搜索,然后用文本搜索,所以在两者之间移动匹配。您对这些设置有何建议?query\u cache\u size=20M query\u cache\u type=1 query\u cache\u limit=2M数据库大约有1.3 gb分为表。您对这些设置有何建议?query\u cache\u size=20M queryy_cache_type=1 query_cache_limit=2M数据库大约有1.3 gb被拆分为表