一: JOIN 连表查询
二:( select * from ***) 嵌套子查询
三:先查一条主表然后循环主表记录数据再查附表。
这几种哪个快一点?或者还有什么方法?
现在做 model 层的公共查库方法
每个方法我都 join 了十几张表,作为公共方法统一调用。
     1 
                    
                    liangWL      2017-03-06 14:06:06 +08:00 
                    
                    用视图,或者你说的第一种应该是最快的 
                 | 
            
     2 
                    
                    argos      2017-03-06 14:08:23 +08:00 
                    
                    快不快 explain 下 
                 | 
            
     3 
                    
                    yeyuexia      2017-03-06 14:10:09 +08:00 
                    
                    join 查询是最快的……你那种直接作 view 吧…… 
                 | 
            
     4 
                    
                    domty      2017-03-06 14:10:16 +08:00 
                    
                    join+索引 
                 | 
            
     6 
                    
                    labasq   OP  | 
            
     8 
                    
                    yeyuexia      2017-03-06 14:45:42 +08:00 
                    
                    @labasq 除了不够灵活以外没什么缺点 一般常用的确定的复杂查询都建议用 view 来做的 
                其实 如果是做报表,为了效率等考虑,又不要求很高的实时性的话,还是建议用异步任务来生成专门的表。毕竟数据量大了之后 join 性能也很让人心碎……  | 
            
     9 
                    
                    ncisoft      2017-03-06 16:05:35 +08:00 via Android 
                    
                    你用什么数据库? 
                 | 
            
     10 
                    
                    fantastM      2017-03-06 18:55:57 +08:00 
                    
                    3 是写两个 sql 的意思吗?拆分 sql 、子查询、连接查询的效率,没有肯定的答案,优化复杂 sql 的关键是索引。“最优”的索引有时比“好的”索引性能要好两个数量级...... 
                另外,自己不清楚执行效率的 sql ,都应该 exlpain 一下。  | 
            
     11 
                    
                    tramedy      2017-03-06 18:57:54 +08:00 
                    
                    join + 索引,如果中间表没有索引,说明数据库索引设计有问题。除非中间表很小 
                 | 
            
     12 
                    
                    mingyun      2017-03-06 23:18:13 +08:00 
                    
                    分开查询吧 
                 | 
            
     16 
                    
                    labasq   OP  | 
            
     21 
                    
                    ncisoft      2017-03-07 09:44:36 +08:00 via Android 
                    
                    @labasq MySQL 的表连接基本就是废物一个,自己用 explain 看看能不能有效利用索引吧,也许加提示( hint ?)能管点用 
                 | 
            
     22 
                    
                    blacklee      2017-03-07 10:18:50 +08:00 
                    
                    针对标题来讲:这种问题都是具体问题具体分析。 
                针对主贴来讲:如果都 join 了 10+张表,我看不出多次 select 的坏处在哪里。 图省事来讲:就全部 join ,性能问题丢给 DBA 去。 有责任心+便利来讲:那就拆分 join 到数据量大的表为多一次 select ,数据量小的表直接 join 。  | 
            
     23 
                    
                    yeyuexia      2017-03-07 14:26:57 +08:00 
                    
                    
                 |