php - 针对 MySQL 查询优化慢速匹配

标签 php mysql database

我的 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) AND price BETWEEN :mincost AND :maxcost ORDER BY price ASC LIMIT :start, :limit

关于php - 针对 MySQL 查询优化慢速匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35773035/

相关文章:

mysql - 调用在 select 的每个值上插入到另一个表中

c++ - 如何使用 mysql 连接器 c++ 设置 autoreconnect 选项

php - PDO Informix ODBC 驱动程序可与 PHP CLI 一起使用,但不能在浏览器中使用

php - Mysql php - 网络应用程序规模? (大是什么意思?)

mysql - 查询自引用表中的父子

mysql - 如何在 magento 中执行大型 sql 查询?

php - MySQL 请求在 String 上返回空结果

php - 无法使用ajax将变量发送到php

php - 通过 PHP 插入/更新 MySQL 表,行将更新但不会插入。

php - 从选择 laravel 中删除