程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 數據庫中聚簇索引與非聚簇索引的差別[圖文]

數據庫中聚簇索引與非聚簇索引的差別[圖文]

編輯:MSSQL

數據庫中聚簇索引與非聚簇索引的差別[圖文]。本站提示廣大學習愛好者:(數據庫中聚簇索引與非聚簇索引的差別[圖文])文章只能為提供參考,不一定能成為您想要的結果。以下是數據庫中聚簇索引與非聚簇索引的差別[圖文]正文


Mysql數據庫供給兩品種型的索引,假如沒准確設置,索引的應用效力會年夜打扣頭卻完整不知成績出在這。

CREATE TABLE test (
    id         INT NOT NULL,
    last_name  CHAR(30) NOT NULL,
    first_name CHAR(30) NOT NULL,
    PRIMARY KEY (id),
    INDEX name (last_name,first_name)
);

以上創立的實際上是一個多列索引,創立列索引的代碼以下:

CREATE TABLE test (
    id         INT NOT NULL,
    last_name  CHAR(30) NOT NULL,
    first_name CHAR(30) NOT NULL,
    PRIMARY KEY (id),
    INDEX name (last_name),
     INDEX_2 name (first_name)
);

一個多列索引可以以為是包括經由過程歸並(concatenate)索引列值創立的值的一個排序數組。 當查詢語句的前提中包括last_name 和 first_name時,例如:

SELECT * FROM test WHERE last_name='Kun' AND first_name='Li';

sql會先過濾出last_name相符前提的記載,在其基本上在過濾first_name相符前提的記載。那假如我們分離在last_name和first_name上創立兩個列索引,mysql的處置方法就紛歧樣了,它會選擇一個最嚴厲的索引來停止檢索,可以懂得為檢索才能最強的誰人索引來檢索,別的一個應用不上了,如許後果就不如多列索引了。

然則多列索引的應用也是須要前提的,以下情勢的查詢語句可以或許應用上多列索引:

SELECT * FROM test WHERE last_name='Widenius';
SELECT * FROM test WHERE last_name='Widenius' AND first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' AND (first_name='Michael' OR first_name='Monty');
SELECT * FROM test WHERE last_name='Widenius' AND first_name >='M' AND first_name < 'N';

以下情勢的查詢語句應用不上多列索引:

SELECT * FROM test WHERE first_name='Michael';
SELECT * FROM test WHERE last_name='Widenius' OR first_name='Michael';

多列建索引比對每一個列分離建索引更有優勢,由於索引樹立得越多就越占磁盤空間,在更新數據的時刻速度會更慢。
別的樹立多列索引時,次序也是須要留意的,應當將嚴厲的索引放在後面,如許挑選的力度會更年夜,效力更高。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved