sqlserver中的索引

索引:
数据库优化之一索引
聚集索引:把数据有序的摆放,物理排序,sqlserver中的字段如果是自增的,会默认加一个聚集索引。
非聚集索引:类似于偏旁部首找字,查找快,快速定位,直达目标。
不影响数据的物理排序,会存储数据的位置和数据。
查找快,但是有维护索引的成本。非聚集索引可以有多个。

  建立索引的原则和建议:
    1.主键最好建立索引(数值主键,性能最高)
    2.外键列也要索引
    3.经常查询的建立索引
    4.经常在where里面
    5.order by/group by/distinct
    6.聚合运算/where条件时,先索引字段
    7重复值比较多的不要索引(sex/state)
    8.text/image不要索引
    9.索引太多了不好。
    
    sqlserver中的执行计划:
         数据库制定执行计划时按照使用资源最少,而不是时间最短。
如何查看sql语句是否有用到索引,查看执行计划:
    1.Table Scan 全表扫描,性能最差
    2.Cluster Index Scan 虽然有聚集索引,其实也是全表扫描
    3.Index Seek(NonClustered) 性能非常高,非聚集索引查找
    4.Index Scan(NonClustered) 先index,再扫描
    5.Cluster Index Seek 聚集索引的查找(性能最高)
     
scan都是全表扫描的,性能比较差。
    一般出了问题,看看执行计划,找出scan,然后换索引。
    
    如果数据量上亿了,索引已经没什么效果了,这个时候考虑分库分表了。

你可能感兴趣的:(sqlserver中的索引)