鍍金池/ 教程/ 數(shù)據(jù)庫/ SQL 索引
SQL AND 和 OR 連接運(yùn)算符
SQL 刪除數(shù)據(jù)庫
SQL 使用序列
SQL CONCAT 函數(shù)
SQL 使用視圖
SQL SELECT 語句
SQL 別名
SQL MAX 函數(shù)
SQL 創(chuàng)建表
SQL NULL 值
SQL 數(shù)據(jù)類型
SQL RAND 函數(shù)
SQL 臨時(shí)表
SQL INSERT 語句
SQL ALTER TABLE 命令
SQL 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)
SQL SUM 函數(shù)
SQL 子查詢
SQL UPDATE 語句
SQL 表達(dá)式
SQL 操作符
SQL ORDER BY 子句
SQL WHERE 子句
SQL 對(duì)結(jié)果進(jìn)行排序
SQL 注入
SQL AVG 函數(shù)
SQL 選擇數(shù)據(jù)庫,USE 語句
SQL 克隆數(shù)據(jù)表
SQL COUNT 函數(shù)
SQL 語法
SQL DELETE 語句
SQL 約束
SQL 刪除表
SQL TOP、LIMIT 和 ROWNUM 子句
SQL 日期函數(shù)
SQL TRUNCATE TABLE 命令
SQL DISTINCT 關(guān)鍵字
SQL 處理重復(fù)數(shù)據(jù)
SQL 使用連接
SQL 索引
SQL 事務(wù)
SQL GROUP BY 子句
SQL HAVING 子句
SQL MIN 函數(shù)
SQL 概覽
SQL SQRT 函數(shù)
SQL LIKE 子句
SQL 通配符
SQL UNION 子句
SQL 數(shù)據(jù)庫
SQL 創(chuàng)建數(shù)據(jù)庫

SQL 索引

索引是一種特殊的查詢表,可以被數(shù)據(jù)庫搜索引擎用來加速數(shù)據(jù)的檢索。簡(jiǎn)單說來,索引就是指向表中數(shù)據(jù)的指針。數(shù)據(jù)庫的索引同書籍后面的索引非常相像。

例如,如果想要查閱一本書中與某個(gè)特定主題相關(guān)的所有頁面,你會(huì)先去查詢索引(索引按照字母表順序列出了所有主題),然后從索引中找到一頁或者多頁與該主題相關(guān)的頁面。

索引能夠提高 SELECT 查詢和 WHERE 子句的速度,但是卻降低了包含 UPDATE 語句或 INSERT 語句的數(shù)據(jù)輸入過程的速度。索引的創(chuàng)建與刪除不會(huì)對(duì)表中的數(shù)據(jù)產(chǎn)生影響。

創(chuàng)建索引需要使用 CREATE INDEX 語句,該語句允許對(duì)索引命名,指定要?jiǎng)?chuàng)建索引的表以及對(duì)哪些列進(jìn)行索引,還可以指定索引按照升序或者降序排列。

同 UNIQUE 約束一樣,索引可以是唯一的。這種情況下,索引會(huì)阻止列中(或者列的組合,其中某些列有索引)出現(xiàn)重復(fù)的條目。

CREATE INDEX 命令:

CREATE INDEX命令的基本語法如下:

CREATE INDEX index_name ON table_name;

單列索引:

單列索引基于單一的字段創(chuàng)建,其基本語法如下所示:

CREATE INDEX index_name
ON table_name (column_name);

唯一索引:

唯一索引不止用于提升查詢性能,還用于保證數(shù)據(jù)完整性。唯一索引不允許向表中插入任何重復(fù)值。其基本語法如下所示:

CREATE UNIQUE INDEX index_name
on table_name (column_name);

聚簇索引:

聚簇索引在表中兩個(gè)或更多的列的基礎(chǔ)上建立。其基本語法如下所示:

CREATE INDEX index_name
on table_name (column1, column2);

創(chuàng)建單列索引還是聚簇索引,要看每次查詢中,哪些列在作為過濾條件的 WHERE 子句中最常出現(xiàn)。

如果只需要一列,那么就應(yīng)當(dāng)創(chuàng)建單列索引。如果作為過濾條件的 WHERE 子句用到了兩個(gè)或者更多的列,那么聚簇索引就是最好的選擇。

隱式索引:

隱式索引由數(shù)據(jù)庫服務(wù)器在創(chuàng)建某些對(duì)象的時(shí)候自動(dòng)生成。例如,對(duì)于主鍵約束和唯一約束,數(shù)據(jù)庫服務(wù)器就會(huì)自動(dòng)創(chuàng)建索引。

DROP INDEX 命令:

索引可以用 SQL DROP 命令刪除。刪除索引時(shí)應(yīng)當(dāng)特別小心,數(shù)據(jù)庫的性能可能會(huì)因此而降低或者提高。

其基本語法如下:

DROP INDEX index_name;

什么時(shí)候應(yīng)當(dāng)避免使用索引?

盡管創(chuàng)建索引的目的是提升數(shù)據(jù)庫的性能,但是還是有一些情況應(yīng)當(dāng)避免使用索引。下面幾條指導(dǎo)原則給出了何時(shí)應(yīng)當(dāng)重新考慮是否使用索引:

  • 小的數(shù)據(jù)表不應(yīng)當(dāng)使用索引;
  • 需要頻繁進(jìn)行大批量的更新或者插入操作的表;
  • 如果列中包含大數(shù)或者 NULL 值,不宜創(chuàng)建索引;
  • 頻繁操作的列不宜創(chuàng)建索引。
上一篇:SQL HAVING 子句下一篇:SQL 使用視圖