『壹』 資料庫索引有哪幾種,怎樣建立索引
資料庫索引的種類:
1、按照索引列值的唯一性,索引可分為唯一索引和非唯一索引
非唯一索引:B樹索引
create index 索引名 on 表名(列名) tablespace 表空間名;
唯一索引:建立主鍵或者唯一約束時會自動在對應的列上建立唯一索引
2、索引列的個數:單列索引和復合索引
3、按照索引列的物理組織方式
B樹索引
create index 索引名 on 表名(列名) tablespace 表空間名;
點陣圖索引
create bitmap index 索引名 on 表名(列名) tablespace 表空間名;
反向鍵索引
create index 索引名 on 表名(列名) reverse tablespace 表空間名;
函數索引
create index 索引名 on 表名(函數名(列名)) tablespace 表空間名;
刪除索引
drop index 索引名
重建索引
alter index 索引名 rebuild
索引的創建格式:
CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>
ON <schema>.<table_name>
(<column_name> | <expression> ASC | DESC,
<column_name> | <expression> ASC | DESC,...)
TABLESPACE <tablespace_name>
STORAGE <storage_settings>
LOGGING | NOLOGGING
COMPUTE STATISTICS
NOCOMPRESS | COMPRESS<nn>
NOSORT | REVERSE
PARTITION | GLOBAL PARTITION<partition_setting>
UNIQUE | BITMAP:指定UNIQUE為唯一值索引,BITMAP為點陣圖索引,省略為B-Tree索引。
<column_name> | <expression> ASC | DESC:可以對多列進行聯合索引,當為expression時即「基於函數的索引」
TABLESPACE:指定存放索引的表空間(索引和原表不在一個表空間時效率更高)
STORAGE:可進一步設置表空間的存儲參數
LOGGING | NOLOGGING:是否對索引產生重做日誌(對大表盡量使用NOLOGGING來減少佔用空間並提高效率)
COMPUTE STATISTICS:創建新索引時收集統計信息
NOCOMPRESS | COMPRESS<nn>:是否使用「鍵壓縮」(使用鍵壓縮可以刪除一個鍵列中出現的重復值)
NOSORT | REVERSE:NOSORT表示與表中相同的順序創建索引,REVERSE表示相反順序存儲索引值
PARTITION | NOPARTITION:可以在分區表和未分區表上對創建的索引進行分區
使用USER_IND_COLUMNS查詢某個TABLE中的相應欄位索引建立情況
使用DBA_INDEXES/USER_INDEXES查詢所有索引的具體設置情況。
在Oracle中的索引可以分為:B樹索引、點陣圖索引、反向鍵索引、基於函數的索引、簇索引、全局索引、局部索引等,下面逐一講解:
一、B樹索引:
最常用的索引,各葉子節點中包括的數據有索引列的值和數據表中對應行的ROWID,簡單的說,在B樹索引中,是通過在索引中保存排過續的索引列值與相對應記錄的ROWID來實現快速查詢的目的。其邏輯結構如圖:
反向鍵索引是一種特殊的B樹索引,在存儲構造中與B樹索引完全相同,但是針對數值時,反向鍵索引會先反向每個鍵值的位元組,然後對反向後的新數據進行索引。例如輸入2008則轉換為8002,這樣當數值一次增加時,其反向鍵在大小中的分布仍然是比較平均的。
反向鍵索引的創建示例:
createindex ind_t on t1(id) reverse;
註:鍵的反轉由系統自行完成。對於用戶是透明的。
四、基於函數的索引:
有的時候,需要進行如下查詢:select * from t1 where to_char(date,'yyyy')>'2007';
但是即便在date欄位上建立了索引,還是不得不進行全表掃描。在這種情況下,可以使用基於函數的索引。其創建語法如下:
create index ind_t on t1(to_char(date,'yyyy'));
註:簡單來說,基於函數的索引,就是將查詢要用到的表達式作為索引項。
五、全局索引和局部索引:
這個索引貌似很復雜,其實很簡單。總得來說一句話,就是無論怎麼分區,都是為了方便管理。
具體索引和表的關系有三種:
1、局部分區索引:分區索引和分區表1對1
2、全局分區索引:分區索引和分區表N對N
3、全局非分區索引:非分區索引和分區表1對N
創建示例:
首先創建一個分區表
createtable student
(
stuno number(5),
sname vrvhar2(10),
deptno number(5)
)
partition by hash (deptno)
(
partition part_01 tablespace A1,
partition part_02 tablespace A2
);
創建局部分區索引(1v1):
create index ind_t on student(stuno)
local(
partition part_01 tablespace A2,
partition part_02 tablespace A1
);--local後面可以不加
創建全局分區索引(NvN):
create index ind_t on student(stuno)
globalpartition by range(stuno)
(
partition p1 values less than(1000) tablespace A1,
partition p2 values less than(maxvalue) tablespace A2
);--只可以進行range分區
創建全局非分區索引(1vN)
createindex ind_t on student(stuno) GLOBAL;
『貳』 怎麼建立資料庫的索引
PS:索引不是給你使用的,而是資料庫本身使用,索引只是為了讓你的查詢更加快速而已
SQL CREATE INDEX 語法
在表上創建一個簡單的索引。允許使用重復的值:
CREATE INDEX index_name
ON table_name (column_name)
注釋:」column_name」 規定需要索引的列。
SQL CREATE UNIQUE INDEX 語法
在表上創建一個唯一的索引。唯一的索引意味著兩個行不能擁有相同的索引值。
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
CREATE INDEX 實例
本例會創建一個簡單的索引,名為 「PersonIndex」,在 Person 表的 LastName 列:
CREATE INDEX PersonIndex
ON Person (LastName)
如果您希望以降序索引某個列中的值,您可以在列名稱之後添加保留字 DESC:
CREATE INDEX PersonIndex
ON Person (LastName DESC)
假如您希望索引不止一個列,您可以在括弧中列出這些列的名稱,用逗號隔開:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)12
『叄』 資料庫索引怎麼建立
right © 1999-2020, CSDN.NET, All Rights Reserved
程序員必備的瀏覽器插件
登錄
越來越好ing
關注
資料庫索引是什麼,有什麼用,怎麼用 轉載
2018-12-04 23:30:36
5點贊
越來越好ing
碼齡2年
關注
下面是關於資料庫索引的相關知識:
簡單來說,資料庫索引就是資料庫的數據結構!進一步說則是該數據結構中存儲了一張表中某一列的所有值,也就是說索引是基於數據表中的某一列創建的。總而言之:一個索引是由表中某一列上的數據組成,並且這些數據存儲在某個數據結構中。
2.索引的作用。舉個例子,假設有一張數據表Emplyee,該表有三列:
表中有幾萬條記錄。現在要執行下面這條查詢語句,查找出所有名字叫「Jesus」的員工的詳細信息
3.如果沒有資料庫索引功能,資料庫系統會逐行的遍歷整張表,對於每一行都要檢查其Employee_Name欄位是否等於「Jesus」。因為我們要查找所有名字為「Jesus」的員工,所以當我們發現了一條名字是「Jesus」的記錄後,並不能停止繼續查找,因為可能有其他員工也叫「Jesus」。這就意味著,對於表中的幾萬條記錄,資料庫每一條都要檢查。這就是所謂的「全表掃描」( full table scan)
4.而資料庫索引功能索引的最大作用就是加快查詢速度,它能從根本上減少需要掃表的記錄/行的數量。
5.如何創建資料庫索引。可以基於Employee表的兩列創建索引即可:
拓展資料:
索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定信息。如果想按特定職員的姓來查找他或她,則與在表中搜索所有的行相比,索引有助於更
『肆』 在數據表中索引有什麼用,怎麼建立索引
索引用於快來速找出在某個列源中有一特定值的行,不使用索引,MySQL必須從第一條記錄開始讀完整個表,直到找出相關的行,表越大,查詢數據所花費的時間就越多。建立索引的操作步驟如下:
1、首先我們打開一個要操作的數據表,如下圖所示,我們需要給name欄位添加索引。
『伍』 如何創建聚集索引
問題一:如何用sql語句在列上建立聚集索引 可以用如下語句
create clustered index 索引名 on 表名(欄位名)
問題二:如何設置聚集索引(Cluster Index) 一、使用 SQL Server Management Studio
使用對象資源管理器創建聚集索引
在「對象資源管理器」中,展開要創建聚集索引的表。
右鍵單擊「索引」文件夾,指向「新建索引」,然後選擇「聚集索引…」。
在「新建索引」對話框的「常規」頁中,在「索引名稱」框中輸入新索引的名稱。
在「索引鍵列蘆叢陸」下,單擊「添加…」。
在「從 table_name 中選擇列」對話框中,選中要添加到聚集索引的表列的復選框。
單擊「確定」。
在「新建列」對話框中,單擊「確定」。
使用表設計器創建聚集索引
在「對象資源管理器」中,展開要使用聚集索引創建表的資料庫。
右鍵單擊「表」文件夾,然後單擊「新建表…」。
右鍵單擊上面創建的新表,然後單擊「設計」。
在「表設計器」菜單上,單擊「索引/鍵」。
在「索引/鍵」對話框中,單擊「添加」。
從「選定的主/唯一鍵或索引」文本框中選擇新索引。
在網格中,選擇「創建為聚集的」,然後從該屬性右側的下拉列表中選擇「是」。
單擊「關閉」。
在「文件」菜單上,單擊「保存 table_name」。
二、使用 Transact-SQL
創建聚集索引
在「對象資源管理器」中,連接到 資料庫引擎的實例。
在標准菜單欄上,單擊「新建查詢」。
將以下示例復制並粘貼到查詢窗口中,然後單擊「執行」。
USE yourdatabase;
GO
CREATE TABLE dbo.TestTable
(TestCol1 int NOT NULL,
TestCol2 nchar(10) NULL,
TestCol3 nvarchar(50) NULL);
GO
-- Create a clustered index called IX_TestTable_TestCol1
-- on the dbo.TestTable table using the TestCol1 column.
CREATE CLUSTERED INDEX IX_TestTable_TestCol1
ON dbo.TestTable (TestCol1);
GO
問題三:SQL中怎麼創陪頃建非聚集索引 --創建非聚集索引create nonclustered index inx_entry_stock_ on entry_stock_d(entry_stock_bi) --延伸:--創建聚集索引create clustered index inx_entry_stock_bi on entry_stock_d(entry_stock_bi) --創建主鍵create table yourtable (id int primary key,name varchar (50))--增加主鍵alter table entry_stock_d add primary key nonclustered--主鍵且非聚集( entry_stock_bi,aid)
--除此以外還可以通過SQL Server Management Studio 右擊表 -》設計-》 右擊列 根據右鍵菜單 建立主鍵和索引
問題四:資料庫怎樣創建一個唯一聚集索引 在 Microsoft SQL Server 資料庫中,您可以創建聚集索引。在聚集索引中,表中行的物理順序與索鄭行引鍵值的邏輯(索引)順序相同。一個表只能包含一個聚集索引。
創建聚集索引
在對象資源管理器中,右鍵單擊要為其創建聚集索引的表,然後單擊「設計」。
此時,將在表設計器中打開該表。
在表設計器菜單上,單擊「索引/鍵」。
在「索引/鍵」對話框中,單擊「添加」。
從「選定的主/唯一鍵或索引」列表中選擇新創建的索引。
在網格中,選擇「創建為聚集的」,然後從該屬性右側的下拉列表中選擇「是」。
保存表時將在資料庫中創建該索引。
問題五:有了聚集索引,為什麼還要讓我創建非聚集索引 你也可以不創建。但是有索引在讀取的時候會更快。但是插入的時候有可可能會變慢,這種現象得表中的數據到達一定級別的時候才會比較明顯。
聚集索引和非聚集索引不沖突。聚集索引只能有一個,非聚集可以有多個
聚集索引是:將數據在物理上排序,比如,圖書館的的書,從編號1開始按數字,1,2,3,4,5這樣一直排列下來,這里的 1,2,3,4,5就可以建立聚集索引,檢索的時候假設你檢索 >4的數據就很快。
非聚集是索引是:將數據在邏輯上排序。比如圖書館的書,按照語音 將中文的放到 A區,將英文放在B區,然後又按照圖書的類目,比如 文學類 放在 B曲區的 1號貨架,歷史圖書放在B區的2號貨架,這樣邏輯上的排序是非聚集索引。
手打,累。。。。這是最基本的。索引在表創建的時候有很大學問。我也是皮毛。自己深入研究吧
問題六:在SQLSERVER中怎麼創建聚集索引 CREATE CLUSTERED INDEX CLUSTER_id ON TABLE_name(ID)
問題七:什麼叫聚集索引,建立索引的好處。 1、聚集索引:又叫聚簇索引,物理索引,與基表的物理順序相同,數據值的順序總是按照順序排列 CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH ALLOW_DUP_ROW(允許有重復記錄的聚簇索引) 2、非聚簇索引:CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)3、索引的好處: 1)創建唯一性索引,保證資料庫表中每一行數據的唯一性2)大大加快數據的檢索速度,這也是創建索引的最主要的原因3)加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。4)在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。5)通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的性能。 4、索引的缺點: 1)創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加2)索引需要佔物理空間,除了數據表占數據空間之外,每一個索引還要佔一定的物理空 間, 如果要建立 聚簇索引,那麼需要的空間就會更大。3)當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度
問題八:MySQL中怎樣創建聚集索引和非聚集索引,求創建這兩種索引的SQL語句。謝謝 InnoDB按照主鍵進行聚集,如果沒有定義主鍵,InnoDB會試著使用唯一的非空索引來代替。如果沒有這種索引,InnoDB就會定義隱藏的主鍵然後在上面進行聚集。
所以,對於 聚集索引 來說,你創建主鍵的時候,自動就創建了主鍵的聚集索引。
而普通索引(非聚集索引)的語法,大多數資料庫都是通用的:
CREATE INDEX Syntax
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[index_type]
ON tbl_name (index_col_name,...)
[index_type]
index_col_name:
col_name [(length)] [ASC | DESC]
index_type:
USING {BTREE | HASH | RTREE}
[java] view plain
-- 創建無索引的表格
create table testNoPK (
id int not null,
name varchar(10)
);
-- 創建普通索引
create index IDX_testNoPK_Name on testNoPK (name);
問題九:怎麼用兩個欄位聯合建立聚集索引 怎麼用兩個欄位聯合建立聚集索引
如何用sql語句在列上建立聚集索引可以用如下語句create clustered index 索引名 on 表名(欄位名)
問題十:SQL中怎麼創建非聚集索引 --格式:--CREATE INDEX 索引名稱 ON 表名 (索引欄位);--例:CREATE INDEX INX_TABLEA ON TABLEA(F1,F2,F3);
『陸』 資料庫中怎麼建立索引
1.資料庫中的索引分為兩種類型,分別是普通索引、唯一索引。下面讓我們來分別介紹一下這...
2.第一種是普通索引,CREATE INDEX indexName ON mytable(...
3.第二種是唯一索引,它與普通索引是類似的,但也存在不同之處,不同之處在於索引列的值...
4.以上三張圖分別為創建索引、修改表結構、創建表時直接指定的數據。而且還有四種方式來...
5.第一種方式:ALTER TABLE tbl_name ADD PRIMARY KEY (...