1,所以建立的一个很重要的标准就是其选择性,字段的不同值跟表记录行数的比值,如果接近于1 ,则适合建立所以,越小越不合适。 2,很明显,组合字段建立索引其选择性一般比单个字段建立索引大;3,如果使得索引有效,在where子句中必须包含索引的第一个字段,从这个角度看,分别建立索引将能回答更多的查询,假设有表t1(f1,f2,f3,f4),如果在f1,f2上建立组合索引,那么查询select * from t1 where f2 = fvalue将无法使用该索引,而如果分别对f1,f2建立索引,则在f2上建立的索引则对上面的查询有用。
两者是不一样的: 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); ... ... 解释: 如果像这样建索引,当我们执行查询的时候,数据库会试图选择一个限制最严格的索引使用,也即只有一个索引生效。 嘿嘿,说得够清楚了吧~~~~
2,很明显,组合字段建立索引其选择性一般比单个字段建立索引大;3,如果使得索引有效,在where子句中必须包含索引的第一个字段,从这个角度看,分别建立索引将能回答更多的查询,假设有表t1(f1,f2,f3,f4),如果在f1,f2上建立组合索引,那么查询select * from t1 where f2 = fvalue将无法使用该索引,而如果分别对f1,f2建立索引,则在f2上建立的索引则对上面的查询有用。
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);
... ...
解释:
如果像这样建索引,当我们执行查询的时候,数据库会试图选择一个限制最严格的索引使用,也即只有一个索引生效。 嘿嘿,说得够清楚了吧~~~~