数据库性能优化-3-创建合适的索引

来源:互联网 发布:ubuntu如何删除文件夹 编辑:程序博客网 时间:2024/05/20 10:11

索引:引用百度文库(在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑清单)据我了解,SQL SERVER中的索引是一个平衡二叉树的数据结构,够快速的查找想要的数据提升用户的访问速度。

1、聚集索引:叶子节点上面存储用户的真实数据,通常一张表最多只能有一个聚集索引。

        通常为一张表某个字段创建一个主键,那么在SQL SERVER默认情况下,为这个主键是创建的是聚集索引,通常为一个主键数据类型UUID,这时候性能非常差,我们在插入数据的时候是随机插入的,同一天订单的数据可能位于多个不相邻子节点的叶子节点上面,减低了访问速度,严重并且会造成索引碎片。

        一般我们设置订单的聚集索引会设置在订单的时间字段上面,通常会根据时间去查找某些数据,比如某一天的数据,某一个月的数据,在查找的过程中,数据刚好全部位于某一个子节点的叶子节点上面或者相邻叶子节点上面,大大提升了访问速度。

2、非聚集索引:叶子节点上面存储的是页码,通过页码,快速的定位我们的数据,对每列都可以创建一个非聚集索引,索引会占据存储空间,索引并不是够越多越好,应该建立适当的非聚集索引。

通常我们给外键上创建非聚集索引,如:订单上面业务员,客户,订单明细上面的产品,供应商等。

聚集索引应该避免书签查找:当我们进行非聚集索引查找的时候,如果返回的某些列没有完全包含调用者想要的某些列,这个时候会从数据表查找数据,如果将某些列存储在索引中此时索引叫覆盖索引:

使用索引踩的坑:

1)、应该避免在索引上进行计算,会造成查询的过程中,不走索引路线。

2)、索引占据额外的存储空间,并不是越多越好。

3)、每张表最好创建一个聚集索引,建议创建在时间字段上(在根据时间查找或者关联的时候很有用,曾经某个人创建一张新表忘记添加聚集索引,导致我的那部分语句执行的相当慢,最后通过真实执行计划分析找到原因)。

原创粉丝点击