关于Mysql的索引,求助!!!!!一:Group by 和 where 都使用的情况下,索引该咋整呢?例如:一张表Ta(a1,a2,a3,a4,a5),其中以a1,a2,a3顺序建立了主键select * from where a4=1 group by a1,a2;
(注:where后面a4只会是=什么的语句,不会>、<之类的)像这样的语句,是否只建立一个a4的单字段索引就可以了呢?据说主键会默认建议一个索引,那么我就应该有一个a1,a2,a3的组合索引了,不用再建了吧?
二:当一张表where 字段 in (另一个表的一个字段)的时候,索引该咋整呢?例如:一张表Ta(a1,a2,a3,a4,a5),主键如上;另一张表Tb(b1,b2),主键b1select b1, (select sum(a5) from Ta where a3 in [b2]) as S_a5 from Tb;像这样的语句,对Ta来说,是否可以建立索引的手段加快查找速度,如果可以,那么单独建议一个a3的索引是否就可以了呢?mysql索引

解决方案 »

  1.   

    第2种写法,对服务器的负担很大吗?那该如何修改查询的计算的流程呢。先select Tb获得b2字段,然后循环select sum(..) from ta where...这样?
      

  2.   

    或者,这样嵌套:select b.b1,sum(a.a5) from Ta a, Tb b where a.a3 in [b2]
      

  3.   


    看这里:http://blog.csdn.net/neptune_yin/article/details/8696515
      

  4.   

    一:Group by 和 where 都使用的情况下,索引该咋整呢?例如:一张表Ta(a1,a2,a3,a4,a5),其中以a1,a2,a3顺序建立了主键select * from where a4=1 group by a1,a2;
    (注:where后面a4只会是=什么的语句,不会>、<之类的)像这样的语句,是否只建立一个a4的单字段索引就可以了呢?据说主键会默认建议一个索引,那么我就应该有一个a1,a2,a3的组合索引了,不用再建了吧?
    create index xx on ta(a4,a1,a2);
      

  5.   

    二:当一张表where 字段 in (另一个表的一个字段)的时候,索引该咋整呢?例如:一张表Ta(a1,a2,a3,a4,a5),主键如上;另一张表Tb(b1,b2),主键b1select b1, (select sum(a5) from Ta where a3 in [b2]) as S_a5 from Tb;像这样的语句,对Ta来说,是否可以建立索引的手段加快查找速度,如果可以,那么单独建议一个a3的索引是否就可以了呢?where a3 in [b2]是什么意思? 如果B2仅是个字段那和 a3=b2没什么差别。create index xxx on ta(a3)