zoukankan      html  css  js  c++  java
  • 聚集索引,非聚集索引的区别是什么?什么场合用?

    创建语法:
    create [unique] [clustered|nonclustered] index ix_索引名字 on 表名
    (
    列1 desc|asc
    ,列2 desc|asc)
    ,...
    )

    unique : 表示是否创建唯一索引,不是必须

    聚集索引:表记录的排列顺序和与数据的存储顺序一致(主键),一个表只能有一个,但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。 
    -->聚集索引规定了数据文件的存储顺序

    非聚集索引:表记录的排列顺序和与数据的存储顺序不一致(唯一),一个表可以有多个
    -->是一个单独存放的指针表,用来快速找到对应点的地址

    更形象的说字典的拼音目录就是聚集索引,笔画目录就是非聚集索引。
    相同点:都是按照索引查找.
    列举三种导致索引不生效的SQL语句写法
    (1)对索引列使用了函数或计算
    假如表table1的索引列是id,但如下语句会使索引无效
    select * from table1 where dbo.fn_fun(id)='xxx'


    (2)对索引列使用了Like ‘%X’或Like ‘%X%’
    引用上面的表,如下语句也会使索引无效
    select * from table1 where id like '%xx%'


    (3)在where子句中使用了In(子查询)
    如下语句会使索引无效
    select * from table1 where id in (select id from table2)


    (4)数据类型转换将导致不能利用索引
    如下语句会使索引无效
    select * from table1 where cast(id as varchar(50))='xxx'


    (5)负向比较将导致不能利用索引
    如下语句会使索引无效
    select * from table1 where 'xxx'=id

    索引有什么不足?
    缺点:过多的索引,在insert、update 和 delete 的时候增加索引的维护成本,降低并发量;

    转载自 https://www.cnblogs.com/xiaoweigogo/p/7778781.html

  • 相关阅读:
    Windows 文件过滤驱动经验总结
    修改disk驱动监控文件系统的IO特征
    STATUS_MUTANT_NOT_OWNED
    网络连接存储(Networkattached storage,NAS)简介
    缓存管理器
    LINUX softraid 管理
    过滤驱动的问题自我总结
    Visual Studio 2010 (vs2010) 全屏功能的改进
    在 .NET 中,后++ 运算符产生的一个小问题
    在 Visual Studio 2008 中去掉某些文件的只读属性
  • 原文地址:https://www.cnblogs.com/youngharvard/p/10416960.html
Copyright © 2011-2022 走看看