【发布时间】:2017-01-06 10:44:49
【问题描述】:
我正在尝试为搜索页面构建一个查询,这是我的第一个查询,结果在毫秒内加载的速度非常快
$query 是 php 变量,它是搜索文本
$sql="SELECT * FROM
tbl_product
WHERE
((tbl_product.pd_name LIKE '%$query%')
OR (tbl_product.pd_art LIKE '%$query%')
OR (tbl_product.pd_srkw LIKE '%$query%'))
AND pd_bestsell <> 1
ORDER BY RAND()";
但是,当我使用搜索建议表构建查询时,它的速度非常慢,需要 2-4 秒才能加载。我们的服务器是非常强大的专用服务器,因此它不会是服务器的问题。
sgtexts=保留建议文本
sgproduct =在建议表上保留产品 ID
$sql="SELECT * FROM
tbl_product,tbl_suggetions
WHERE
((tbl_product.pd_name LIKE '%$query%')
OR (tbl_product.pd_art LIKE '%$query%')
OR (tbl_product.pd_srkw LIKE '%$query%')
OR (tbl_suggetions.sgtexts LIKE '%$query%'
AND tbl_product.pd_id=tbl_suggetions.sgproduct))
AND pd_bestsell <> 1
GROUP BY pd_id
ORDER BY RAND()";
谁能帮我优化第二个查询
【问题讨论】:
-
EXPLAIN应该会给你答案。 dev.mysql.com/doc/refman/5.7/en/explain.html -
tbl_suggetions.sgtexts是否已编入索引? suggetions 不是错字吗? -
在你的表上添加索引
-
感谢我的索引表伴侣
-
桌子有多大?
标签: php mysql join query-optimization