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,然后换索引。
    
    如果数据量上亿了,索引已经没什么效果了,这个时候考虑分库分表了。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容