create index index_name on 表(字段1,字段2)

解决方案 »

  1.   

    楼主可以分别建立单个索引和组合索引,然后按Ctrl+L对比执行计划
      

  2.   

    To 楼上两位:那么如果是两个表进行联合查询呢?
    比如:sql="Select 表1.*,表2.* from 表1 inner join 表2 on 表1.id=表2.uid where 表1.字段1=变量 or 表1.字段2=变量 order by 等级 asc,时间 asc"
    这样的SQL语句上面的索引是否还有效呢?谢谢
      

  3.   

    我的意见是分别建立索引:create index index_name on 表(字段1),
    create index index_name2 on 表(字段2).
    那么如果是两个表进行联合查询呢?这样的SQL语句上面的索引是否还有效呢?--------------------------------->仍有效,因为你的where条件没有变。索引主要是针对where条件而设的,提搞电脑检索速度。
      

  4.   

    我记得如果是一个索引中有多个字段,必须和where中的字段的顺序一至,比如说where 字段1=变量1 and(or) 字段2=变量2那么索引中也必须是字段1,字段2(我是指把两个字段放在一个索引中)是这样吗?另外,为何order后面用到的字段不需要建产检索呢?谢谢
      

  5.   

    SQL="Select * from 表 where 字段1=变量1 or 字段2=变量1 order by 等级 asc,时间 asc"如果你的Select确实是"select *"的话,则只需要create index index_name on 表(字段1,字段2).
      

  6.   

    我记得如果是一个索引中有多个字段,必须和where中的字段的顺序一至,比如说where 字段1=变量1 and(or) 字段2=变量2那么索引中也必须是字段1,字段2(我是指把两个字段放在一个索引中)是这样吗?
    这个问题呢?谢谢
      

  7.   

    顺序应该有一定关系,因为生成逻辑查询计划时候对WHERE后的条件进行分析和展平时应该是按照某种顺序进行的(比如由右到左进行,这要看查询优化器的具体实现机制).可以具体测试一下.
      

  8.   

    那创建索引的时候,下面有一个unique是否要勾选呢?在我这种情况下?谢谢