84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
学习是最好的投资!
单独查询,使用键值对
很简单也很实用的一个方案就是建立中间表, 用空间换时间。
另外当数据量大到一定程度情况下,考虑分库分表,可以看看mycat中间件。
个人建议先一个个表排除看是哪个表影响查询的速度,确定是哪个表之后,然后再根据其做索引优化
从数据库优化角度出发,最后结果就一个数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
单独查询,使用键值对
很简单也很实用的一个方案就是建立中间表, 用空间换时间。
另外当数据量大到一定程度情况下,考虑分库分表,可以看看mycat中间件。
个人建议先一个个表排除看是哪个表影响查询的速度,确定是哪个表之后,然后再根据其做索引优化
从数据库优化角度出发,最后结果就一个数count(*)大量的关联导致内存消耗跟时间浪费.
给个思路吧:
将sql结果做成如下:
最后count(*)等于每一行数量相乘最后相加,
即:(数量11*数量12*...*数量16)+(数量21*...*数量26)
以减少大量的笛卡尔积.
sql: