① 資料庫怎麼建索引
問題一:sql怎麼建立索引 CREATE INDEX
為給定表或視圖創建索引。
只有表或視圖的所有者才能為表創建索引。表或視圖的所有者可以隨時創建索引,無論表中是否有數據。可以通過指定限定的資料庫名稱,為另一個資料庫中的表或視圖創建索引。
語法
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
[ WITH [ ,...n] ]
[ ON filegroup ]
::=
{ PAD_INDEX |
FILLFACTOR = fillfactor |
IGNORE_DUP_KEY |
DROP_EXISTING |
STATISTICS_NOREPUTE |
SORT_IN_TEMPDB
}
--這是基本語法,建立索引,只針對查詢和一些更新和刪除的速度,像性別一列,如果表裡面有1000行,如果只有1行是男,這樣用索引的話肯定高,如果有990行是男,那麼它不如直接掃描了,這是選擇性
問題二:oracle 資料庫如何建立索引 如何用索引? 5分 方法如下:
Oracle中建立索盯敬手引,會提高查詢速度: create index 索引名 on 表名(列名);
例如:
create index index_userid on tbl_detail(userid);
如何找資料庫表的主鍵欄位的名稱?
SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and table_name='AAA'; select * from dba_cons_columns where CONSTRAINT_NAME='SYS_AAA';
Oracle 在創建主鍵(可以不加稿謹constrai浮t SYS_AAA),會為庫表自動創建索引,
索引的列為主鍵列。 並且當庫表某些列名或者庫表名改變時候,
Oracle自動創建的索引SYS_AAA,中的索引列也會自動更新(類似於視圖),並且SYS_AAA會與名字更改後的庫表還是保持索引關系。 關鍵系統庫表: desc dba_constraints desc dba_cons_columns
desc dba_indexes desc dba_ind_columns desc DBA_TAB_COLUMNS
例子1:更改庫表的列名
ALTER TABLE AAA RENAME COLUMN ID TO AAA_ID; create table AAA ( ID NUMBER(8), NAME CHAR(20),
constraint SYS_AAA primary key(ID) );
查找約束名字
select c.CONSTRAINT_NAME,c.table_name,cc.COLUMN_NAME from user_constraints c, user_cons_columns cc
where c.constraint_name=cc.constraint_name and c.table_name ='AAA' AND C.CONSTRAINT_TYPE='P';
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME ------------------------------ ------------ ------------- SYS_AAA AAA ID
查找索引
select index_name,index_type,uniqueness from user_indexes where table_name='AAA'; INDEX_NAME INDEX_TYPE UNIQUENES
問題三:如何正確合理的建立MYSQL資料庫凱嫌索引 如何正確合理的建立MYSQL資料庫索引
索引是快速搜索的關鍵。MySQL索引的建立對於MySQL的高效運行是很重要的。下面介紹幾種常見的MySQL索引類型。
在資料庫表中,對欄位建立索引可以大大提高查詢速度。假如我們創建了一個 mytable表:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL
); 我們隨機向裡面插入了10000條記錄,其中有一條:5555, admin。
在查找username=admin的記錄 SELECT * FROM mytable WHERE
username='admin';時,如果在username上已經建立了索引,MySQL無須任何掃描,即准確可找到該記錄。相反,MySQL會掃描所有記錄,即要查詢10000條記錄。
索引分單列索引和組合索引。單列索引,即一個索引只包含單個列,一個表可以有多個單列索引,但這不是組合索引。組合索引,即一個索包含多個列。
MySQL索引類型包括:
(1)普通索引
這是最基本的索引,它沒有任何限制。它有以下幾種創建方式:
◆創建索引
CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR類型,length可以小於欄位實際長度;如果是BLOB和TEXT類型,必須指定 length,下同。
◆修改表結構
ALTER mytable ADD INDEX [indexName] ON (username(length))
◆創建表的時候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length)) ); 刪除索引的語法:
DROP INDEX [indexName] ON mytable;
(2)唯一索引
它與前面的普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。它有以下幾種創建方式:
◆創建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length))
◆修改表結構
ALTER mytable ADD UNIQUE [indexName] ON (username(length))
◆創建表的時候直接指定
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length)) );
(3)主鍵索引
它是一種特殊的唯一索引,不允許有空值。一般是在建表的時候同時創建主鍵索引:
CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL,
PRIMARY KEY(ID) ); 當然也可以用 ALTER 命令。記住:一個表只能有一個主鍵。
(4)組合索引
為了形象地對比單列索引和組合索引,為表添加多個欄位:
CREATE TABLE mytable( ID INT......>>
問題四:資料庫索引有哪幾種,怎樣建立索引 索引分為聚簇索引和非聚簇索引兩種,聚簇索引 是按照數據存放的物理位置為順序的,而非聚簇索引就不一樣了;聚簇索引能提高多行檢索的速度,而非聚簇索引對於單行的檢索很快。 根據資料庫的功能,可以在資料庫設計器中創建三種索引:唯一索引、主鍵索引和聚集索引。 在資料庫表中創建的索引可以是是唯一索引、主鍵索引和聚集索引 景安伺服器即使為您解答
問題五:資料庫創建索引後怎麼使用 索引在篩選率低於一定的值的情況是會很有效果.
主要還是看你的查貳語句是怎麼寫的.
記住,在篩選條件中,不要在欄位上使用函數.查詢條件要盡量簡單.能夠讓資料庫引擎更好地分析到合適的執行計劃.
問題六:怎麼創建資料庫的索引 打個比方
create table t1(a int);
create index i1 on t1(a);
那麼t1表的列a就創建了索引。以後查詢t1表,列a有查詢條件的時候就可以用到這個索引。
使用索引提高查詢效率是資料庫自己的事情,一般情況下不需要人為干預索引的使用
問題七:請問資料庫的索引創建後要怎麼用啊? 索引要針對where語句中頻繁出現的欄位創建,索引增加查詢檢索效率,降低插入速度,耗費硬碟空間
問題八:SQL server中 表中如何創建索引? if exists(select *from sys.objects where naem = 'newindex')
drop index newindex
create index
--===================================
竟然沒有懸賞...唉...
那算了吧
我還是都告訴你吧..
看個示例
自己琢磨去:
--==============================================
use master
go
if db_id(N'zhangxu')is not null
drop database zhangxu
go
create database zhangxu
sp_helpdb zhangxu
use zhangxu
go
IF EXISTS (SELECT *FROM SYS.OBJECTS WHERE NAME = N'WORKER')
DROP TABLE WORKER
GO
create table worker
(
w_id int identity (1000,1) not null,
w_name Nvarchar(10) unique,
w_age SMALLINT CONSTRAINT CK_W_AGE CHECK(w_age>20 and w_age>
問題九:資料庫創建索引有什麼優點和缺點 資料庫中索引的優缺點
為什麼要創建索引呢?這是因為,創建索引可以大大提高系統的性能。第一,通過創建唯一性索引,可以保證資料庫表中每一行數據的唯一性。第二,可以大大加快數據的檢索速度,這也是創建索引的最主要的原因。第三,可以加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。第四,在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。第五,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的性能。
也許會有人要問:增加索引有如此多的優點,為什麼不對表中的每一個列創建一個索引呢?這種想法固然有其合理性,然而也有其片面性。雖然,索引有許多優點,但是,為表中的每一個列都增加索引,是非常不明智的。這是因為,增加索引也有許多不利的一個方面。第一,創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加。第二,索引需要佔物理空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空間,如果要建立聚簇索引,那麼需要的空間就會更大。第三,當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,這樣就降低了數據的維護速度。
索引是建立在資料庫表中的某些列的上面。因此,在創建索引的時候,應該仔細考慮在哪些列上可以創建索引,在哪些列上不能創建索引。一般來說,應該在這些列上創建索引,例如:在經常需要搜索的列上,可以加快搜索的速度;在作為主鍵的列上,強制該列的唯一性和組織表中數據的排列結構;在經常用在連接的列上,這些列主要是一些外鍵,可以加快連接的速度;在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的;在經常需要排序的列上創建索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢時間;在經常使用在WHERE子句中的列上面創建索引,加快條件的判斷速度。
同樣,對於有些列不應該創建索引。一般來說,不應該創建索引的的這些列具有下列特點:第一,對於那些在查詢中很少使用或者參考的列不應該創建索引。這是因為,既然這些列很少使用到,因此有索引或者無索引,並不能提高查詢速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。第二,對於那些只有很少數據值的列也不應該增加索引。這是因為,由於這些列的取值很少,例如人事表的性別列,在查詢的結果中,結果集的數據行佔了表中數據行的很大比例,即需要在表中搜索的數據行的比例很大。增加索引,並不能明顯加快檢索速度。第三,對於那些定義為text, image和bit數據類型的列不應該增加索引。這是因為,這些列的數據量要麼相當大,要麼取值很少。第四,當修改性能遠遠大於檢索性能時,不應該創建索引。這是因為,修改性能和檢索性能是互相矛盾的。當增加索引時,會提高檢索性能,但是會降低修改性能。當減少索引時,會提高修改性能,降低檢索性能。因此,當修改性能遠遠大於檢索性能時,不應該創建索引。