一个的表的几个字段建一个索引和一个的表的几个字段各建一个索引有什么区别和联系?

解决方案 »

  1.   

    1,所以建立的一个很重要的标准就是其选择性,字段的不同值跟表记录行数的比值,如果接近于1 ,则适合建立所以,越小越不合适。
    2,很明显,组合字段建立索引其选择性一般比单个字段建立索引大;3,如果使得索引有效,在where子句中必须包含索引的第一个字段,从这个角度看,分别建立索引将能回答更多的查询,假设有表t1(f1,f2,f3,f4),如果在f1,f2上建立组合索引,那么查询select * from t1 where f2 = fvalue将无法使用该索引,而如果分别对f1,f2建立索引,则在f2上建立的索引则对上面的查询有用。
      

  2.   

    两者是不一样的:
    1.一个的表的几个字段建一个索引——这是复合索引(也叫多列索引)
      语法:
      CREATE INDEX index_name ON table_name(column1,column2,...);
      解释:
      使用这种索引,系统会先搜索column1的记录,然后在这个“中间结果集”上进行对column2的搜索,依次往下搜索,搜索的顺序与定义的顺序相同。2.一个的表的几个字段“各”建一个索引——这仍然是单列索引
      语法:
      CREATE INDEX index_name1 ON table_name(column1);
      CREATE INDEX index_name2 ON table_name(column2);
      ... ...
      解释:
      如果像这样建索引,当我们执行查询的时候,数据库会试图选择一个限制最严格的索引使用,也即只有一个索引生效。  嘿嘿,说得够清楚了吧~~~~