Php 针对MySQL查询优化慢速匹配
MyISAM表有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)
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 BYprice
,根据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被拆分为表