首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择查询需要一些优化

MySQL选择查询需要一些优化
EN

Stack Overflow用户
提问于 2016-08-30 08:35:41
回答 1查看 56关注 0票数 1

我正在尝试构建一个搜索页面的查询--这是我的第一个查询,这非常快--在Milli秒内加载结果

$query是php变量,它是搜索文本。

代码语言:javascript
复制
$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秒。我们的服务器是非常强大的专用服务器,所以它不会成为服务器的问题。

sgtext=保留建议文本

sgproduct =将产品ids保留在建议表中

代码语言:javascript
复制
$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()";

有人能帮我优化第二个查询吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 08:40:55

你有什么理由随机订购吗?移除这个会让它更快。

由于您将LIKE运算符与%%结合使用,这将执行全表扫描,并且与使用LIKE‘示例%’相比,其速度自然要慢。

另外,在你的桌子上使用一个连接。尝尝这个

代码语言:javascript
复制
SELECT 
        * 
FROM    tbl_product         tbl_product
JOIN    tbl_suggetions      tbl_suggetions ON tbl_suggetions.sgproduct=tbl_product.pd_id
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 pd_bestsell <> 1 
    GROUP BY pd_id 
    ORDER BY RAND();

如果不需要随机排序数据,请删除ORDER BY RAND()

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

https://stackoverflow.com/questions/39222565

复制
相关文章

相似问题

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