• 索引相关知识


    --使用索引的目的

    --1、提高查询效率、避免全表扫描

    --2、设置主键后(创建聚簇索引后),逻辑顺序和物理顺序一致,会自动按照局促索引排序

    --3、每个表只能有一个聚簇索引,因为一个表中的记录只能以一种物理顺序存放

    --4、聚簇索引可放在一个或多个列上

    --

    SELECT * FROM EMPLOYEE e;

    USE Test

    sp_helpIndex EMPLOYEE  --查询表上拥有的索引

    --创建主键(聚簇索引不一定是主键,可先创建聚簇索引,然后创建主键)

    ALTER   TABLE  EMPLOYEE   

    ADD CONSTRAINT [PK_test]   PRIMARY   KEY   (fname)   

     

    --创建索引

    --CREATE [UNIQUE] [CLUSTERED│NONCLUSTERED]INDEX index_name ON {table│view} (column [ASC│DESC] [,…n])

    CREATE CLUSTERED  INDEX i_fname ON EMPLOYEE(empid)  --创建聚簇索引

    CREATE INDEX i_fname ON EMPLOYEE(empid)  --创建非聚簇索引

    Create index i55 on EMPLOYEE(fname,lname)     --创建复合索引

    DROP INDEX EMPLOYEE.i_fname  --删除索引表名/视图名.索引名称(这里不是字段名称,是索引名称)

               

    --删除主键的方法  

    Declare @Pk varChar(100); 

    Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('EMPLOYEE') and xtype='PK';

    if @Pk is not null

    begin

         exec('Alter table EMPLOYEE Drop '+ @Pk)  --删除原主键

     end

    --删除主键的方法           

    --

    SQL语句在什么情况下使用全表扫描

    -

    -

    SQL语句在什么情况下使用全表扫描

    1对返回的行无任何限定条件即没有where 字句 

    2对数据表与任何索引主列相对应的行限定条件例如City-State-Zip列创建了三列复合索引那么仅对State有列限定条件不能使用这个索引因为State不是索引的主列

    3对索引的主列有限定条件但是条件在表达式里使用例如City上有索引但是若使用表达式

    where upper(city)=''TokYo''  

    City ''X'' like ''TOKYO%'',

    那么不会使用索引

    4对索引的主列有限定条件但是条件或者是Null或者是不相等例如City上有索引但是若使用表达式: 

    where City is null,where City is 

    not null,Where city!=''TOKYO''.

    5: 对索引的主列有限定条件但是条件使用like操作以及值以%开始或者值是一个赋值变量例如

    where City like ''%YOK%'' 

    where City like: City_bind_Variable xl_rao

  • 相关阅读:
    Nginx入门
    Spring基础知识汇总 Java开发必看
    java ArrayList倒序
    1
    js event 的target 和currentTarget
    java 文件的写入和读取
    DOMContentLoaded与load的区别
    JS中先有Object还是先有Function?
    JSON.stringify的三个参数
    Java的泛型约束和限制
  • 原文地址:https://www.cnblogs.com/gossip/p/2022023.html
Copyright © 2020-2023  润新知