首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化sql连接查询

如何优化sql连接查询
EN

Stack Overflow用户
提问于 2013-10-04 21:19:12
回答 4查看 3.4K关注 0票数 1

我想优化sql查询

代码语言:javascript
复制
SET SQL_BIG_SELECTS=1;
SELECT
    `Surveys`.`fname`
    , `Surveys`.`lname`
    , `Surveys`.`smobile`
    , `Surveys`.`semail`    
    , `Surveys`.`country`
    , `Surveys`.`city`    
    , `Surveys`.`sdob`
    , `Brand`.`brandname`
    , `Product`.`productname`        
    , `Surveys`.`outletcode`
    , `Surveys`.`outletname`
    , `Surveys`.`coupon_no`
    , `Users`.`username`
    , DATE_ADD(`Surveys`.datetime, INTERVAL 8 HOUR) as datetime
    , `Surveys`.`duration`    
    , userentry.couponcode as wcouponcode
    , userentry.couponcodecountry
    , userentry.prizename
    , DATE_ADD(userentry.datetime, INTERVAL 8 HOUR) as wdatetime    
FROM
    `Surveys`
    INNER JOIN `Brand` 
        ON (`Surveys`.`brandid` = `Brand`.`brandid`)
    INNER JOIN `Product` 
        ON (`Surveys`.`productid` = `Product`.`productid`) AND (`Surveys`.`brandid` = `Product`.`brandid`)    
    INNER JOIN `Users` 
        ON (`Surveys`.`userid` = `Users`.`userid`)
    INNER JOIN `userentry` 
        ON (`userentry`.`mobile` = `Surveys`.`smobile`)

这里,如果我没有编写SET SQL_BIG_SELECTS=1,它不能工作

即使使用SQL_BIG_SELECTS it expire(sql超时),

那么如何优化这个查询呢?

请帮帮我

EN

回答 4

Stack Overflow用户

发布于 2013-10-04 21:33:21

在优化查询时,总是需要考虑两件事:

  • 可以使用的索引(可能需要创建索引)
  • 查询的编写方式(可能需要更改查询,以便查询优化器能够找到适当的索引,并且不会重复读取数据)

这些关键字是:

1.您不需要子查询-只需执行直接连接和聚合

2.您应该能够使用内部连接,这通常比外部连接更有效

票数 3
EN

Stack Overflow用户

发布于 2013-10-04 21:25:00

包含在join中的两个表之间的公共列应该被编入索引。

票数 2
EN

Stack Overflow用户

发布于 2013-10-04 21:23:07

必须为select语句中使用的列(brandId、productid、userid、mobile)建立索引

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

https://stackoverflow.com/questions/19182249

复制
相关文章

相似问题

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