SQL Server 索引——的創建、刪除、何時使用、索引查詢語句


1.SQL 創建索引

使用CREATE 語句創建索引

CREATE INDEX  index_name  ON  table_name(column_name,column_name) include(score)  ---普通索引

CREATE UNIQUE INDEX index_name ON table_name (column_name) ;---非空索引

CREATE PRIMARY KEY INDEX index_name ON table_name (column_name) ;---主鍵索引

使用ALTER TABLE語句創建索引
alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;

2.刪除索引

drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;

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

例如:有一張person表,其中有2W條記錄,記錄着2W個人的信息。有一個Phone的字段記錄每個人的電話號碼,現在想要查詢出電話號碼為xxxx的人的信息。

  如果沒有索引,那么將從表中第一條記錄一條條往下遍歷,直到找到該條信息為 ;

如果有了索引,那么會將該Phone字段,通過一定的方法進行存儲,好讓查詢該字段上的信息時,能夠快速找到對應的數據,而不必在遍歷2W條數據了。

4.索引查詢

SQL Server數據庫索引信息查詢

--sql server查看表中已存在的索引

exec sp_helpindex 表名

-- 查看某個表的索引

SELECT * FROM sys.sysindexes
WHERE id=object_id('RelactionGraph')
 
-- 查看整個庫的索引
SELECT * FROM sys.sysindexes
 
-- 查看所有庫的索引
IF object_id('tempdb..#')IS NOT NULL
    DROP TABLE #
SELECT * INTO # FROM sys.sysindexes WHERE 1=2
 
INSERT INTO #
    EXEC sys.sp_MSforeachdb @command1='Select * from ?.sys.sysindexes'
     
SELECT * FROM #

Oracle數據庫索引信息查詢
oracle對於數據庫中的表信息,存儲在系統表中。查詢已創建好的表索引,可通過相應的sql語句到相應的表中進行快捷的查詢:

1. 根據表名,查詢一張表的索引
 select * from user_indexes where table_name=upper('party_customer'); 
2. 根據索引號,查詢表索引字段
1 select * from user_ind_columns where index_name=('索引名'); 
3.根據索引名,查詢創建索引的語句
 select dbms_metadata.get_ddl('INDEX','SQL100310102315181') from dual ; --['用戶名']可省,默認為登錄用戶 
PS:dbms_metadata.get_ddl還可以得到建表語句,如:
 SELECT DBMS_METADATA.GET_DDL('TABLE','表名', ['用戶名']) FROM DUAL ; //取單個表的建表語句,['用戶名']可不輸入,默認為登錄用戶

SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u; //取用戶下所有表的建表語句 

當然,也可以用pl/sqldeveloper工具來查看相關的表的各種信息。

查詢用戶的索引  
select  index_name,table_name,tablespace_name,  
    index_type,uniqueness , status   
    from dba_indexes where owner='TPSHDEV';  
查詢用戶的索引列  
select index_name,table_name,column_name,  
    index_owner,table_owner  
from dba_ind_columns  
where table_owner='TPSHDEV';  
查詢Orcale數據庫執行計划
EXPLAIN PLAN FOR 
SELECT * FROM PARTY_CUSTOMER WHERE ID = '000000003034' ; --要解析的SQL腳本 
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM