日期:2014-05-18  浏览次数:20452 次

索引的建立应该怎么写好?
一张表查询的时候条件需要使用字段1和字段2,请问是单独设置两个索引还是建立一个复合索引,请说明理由

------解决方案--------------------
单独设置两个索引的话可以设置成一个聚集索引,一个非聚集索引,聚集索引建立在重复值比较少的字段上,where条件后比较用到比较多的列上,聚集索引优化查询速度性能更好点,但是插入速度会更慢些..如果这张表经常修改和插入..而不经常查询那么聚集索引不建业行...
如果建立组合索引.第一个字段要建在重复值比较少的..也就是 indexname..还有就是where经常用到的列.组合索引一定要建立在前面..比如(年龄,入学时间年月日小时分钟秒) 这样是不对的..年龄的重复值比较多..所以这个组合索引 入学时间应该建立在前面..如果where调教经常跟入学时间. 那么入学时间也必须建立在入学时间上..因为如果只用到一个条件..如果入学时间建立在后面那么他是不走索引的! like 'a%' 走索引,like'%a'不走索引,like'%a%'不走索引, 经过函数 转换过的列,比如 convert(col1) 不走, dateadd(day,num,dt)不走, 当一个查询检索的条数大于 表的 20% 表,不走索引..优化器会感觉scan比索引快..他走scan. 聚集索引建立在 字段比较 小的类型上..(地段比较小,单次 io 读入缓存的数据就多..得到你要数据的概率也就大. 我丫语言组织能力不好..写的有点乱..不过我把我会的大部分都说了! 就这么多水!
------解决方案--------------------
SQL code
单独的索引

------解决方案--------------------
索引相关

楼主看看这个帖子,应该是很详细的了。