Heim  >  Fragen und Antworten  >  Hauptteil

mysql - 如何减少使用或者不用LEFT JOIN查询?

PHPzPHPz2743 Tage vor722

Antworte allen(4)Ich werde antworten

  • PHP中文网

    PHP中文网2017-04-17 16:52:13

    单独查询,使用键值对

    Antwort
    0
  • PHPz

    PHPz2017-04-17 16:52:13

    很简单也很实用的一个方案就是建立中间表, 用空间换时间。

    另外当数据量大到一定程度情况下,考虑分库分表,可以看看mycat中间件。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:52:13

    个人建议先一个个表排除看是哪个表影响查询的速度,确定是哪个表之后,然后再根据其做索引优化

    Antwort
    0
  • 高洛峰

    高洛峰2017-04-17 16:52:13

    从数据库优化角度出发,最后结果就一个数count(*)大量的关联导致内存消耗跟时间浪费.

    给个思路吧:
    将sql结果做成如下:

    最后count(*)等于每一行数量相乘最后相加,
    即:(数量11*数量12*...*数量16)+(数量21*...*数量26)
    以减少大量的笛卡尔积.

    sql:

    select t_for_sale.id,  nvl(t1.count1, 0), ...
    left join (select id, count(*) count1 from t_user group by id) t1 on t1.id=t_for_sale.id
    ....
    from t_for_sale
    

    Antwort
    0
  • StornierenAntwort