逐浪云主机

立即开通

SQL Server 索引——的创建、删除、何时使用、索引查询语句

作者:本站编辑 发布时间:2024-10-02 来源:本站原创 点击数:

1.SQL 创建索引

使用CREATE 语句创建索引

  1. 1.
    CREATE INDEX index_name ON table_name(column_name,column_name) include(score) ---普通索引
  2. 2.
  3. 3.
    CREATE UNIQUE INDEX index_name ON table_name (column_name) ;---非空索引
  4. 4.
  5. 5.
    CREATE PRIMARY KEY INDEX index_name ON table_name (column_name) ;---主键索引

使用ALTER TABLE语句创建索引

  1. 1.
    alter table table_name add index index_name (column_list) ;
  2. 2.
    alter table table_name add unique (column_list) ;
  3. 3.
    alter table table_name add primary key (column_list) ;

2.删除索引

  1. 1.
    drop index index_name on table_name ;
  2. 2.
    alter table table_name drop index index_name ;
  3. 3.
    alter table table_name drop primary key ;

3.当需要快速找出在某个列中有一特定值的行

例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。

  如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为 ;

如果有了索引,那么会将该Phone字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。

4.索引查询

SQL Server数据库索引信息查询

  1. 1.
    --sql server查看表中已存在的索引
  2. 2.
  3. 3.
    exec sp_helpindex 表名
  4. 4.
  5. 5.
    -- 查看某個表的索引
  6. 6.
  7. 7.
    SELECT * FROM sys.sysindexes
  8. 8.
    WHERE id=object_id('RelactionGraph')
  9. 9.
  10. 10.
    -- 查看整個庫的索引
  11. 11.
    SELECT * FROM sys.sysindexes
  12. 12.
  13. 13.
    -- 查看所有庫的索引
  14. 14.
    IF object_id('tempdb..#')IS NOT NULL
  15. 15.
    DROP TABLE #
  16. 16.
    SELECT * INTO # FROM sys.sysindexes WHERE 1=2
  17. 17.
  18. 18.
    INSERT INTO #
  19. 19.
    EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'
  20. 20.
  21. 21.
    SELECT * FROM #
  22. 22.
    `

Oracle数据库索引信息查询

oracle对于数据库中的表信息,存储在系统表中。查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:

1. 根据表名,查询一张表的索引

  1. 1.
    select * from user_indexes where table_name=upper('party_customer');

2. 根据索引号,查询表索引字段

  1. 1.
    1 select * from user_ind_columns where index_name=('索引名');
  2. 2.
    3.根据索引名,查询创建索引的语句
  3. 3.
    select dbms_metadata.get_ddl('INDEX','SQL100310102315181') from dual ; --['用户名']可省,默认为登录用户
  4. 4.
    PS:dbms_metadata.get_ddl还可以得到建表语句,如:
  5. 5.
    SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用户名']) FROM DUAL ; //取单个表的建表语句,['用户名']可不输入,默认为登录用户
  6. 6.
  7. 7.
    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用户下所有表的建表语句

当然,也可以用pl/sqldeveloper工具来查看相关的表的各种信息。

查询用户的索引

  1. 1.
    select index_name,table_name,tablespace_name,
  2. 2.
    index_type,uniqueness , status
  3. 3.
    from dba_indexes where owner='TPSHDEV';
  4. 4.
    查询用户的索引列
  5. 5.
    select index_name,table_name,column_name,
  6. 6.
    index_owner,table_owner
  7. 7.
    from dba_ind_columns
  8. 8.
    where table_owner='TPSHDEV';
  9. 9.
  10. 10.
    查询Orcale数据库执行计划
  11. 11.
    EXPLAIN PLAN FOR
  12. 12.
    SELECT * FROM PARTY_CUSTOMER WHERE ID = '000000003034' ; --要解析的SQL脚本
  13. 13.
    SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友