kingbase索引常用管理命令

1、創(chuàng)建索引

CREATE INDEX emp_ename_index ON emp(ename)? TABLESPACE users_space;

2浓领、創(chuàng)建唯一索引

索引可以是唯一的玉凯,也可以是非唯一的。唯一索引保證表中沒有兩行在鍵列中有重復(fù)的值联贩。非惟一索引則不會對列值施加此限制漫仆。使用CREATE UNIQUE INDEX語句創(chuàng)建一個唯一索引。下面的例子會為dept表的ename列創(chuàng)建唯一索引dept_unique_index:

CREATE UNIQUE INDEX dept_unique_index ON dept (dname)? ? ? TABLESPACE users_space;

當(dāng)一個索引被聲明為唯一時泪幌,索引中不允許多個表行具有相同的索引值盲厌。空值被視為不相同(除非創(chuàng)建索引時指定了NULLS NOT DISTINCT 子句)祸泪。一個多列唯一索引將會拒絕在所有索引列上具有相同組合值的表行吗浩。

KingbaseES會自動為定義了一個唯一約束或主鍵的表創(chuàng)建一個唯一索引。該索引包含組成主鍵或唯一約束的所有列(可能是一個多列索引)没隘,它也是用于強制這些約束的機制懂扼。

說明:當(dāng)前,只有B-tree能夠被聲明為唯一右蒲。

3阀湿、創(chuàng)建指定順序的B樹索引??

一個索引可能還需要將它們以指定的順序傳遞。這使得查詢中的ORDER BY不需要獨立的排序步驟瑰妄。默認(rèn)情況下陷嘴,CREATE INDEX命令創(chuàng)建適合于大部分情況的B-tree索引。如下列命令可以用來在表test上的id列上創(chuàng)建一個索引:

CREATE INDEX test_id_index ON test (id);

索引的名字test_id_index可以自由選擇翰撑,但最好選擇一個有相關(guān)性罩旋、能讓用戶想起該索引用途的名字。 在KingbaseES當(dāng)前支持的索引類型中眶诈,只有B-tree可以產(chǎn)生排序后的輸出涨醋,其他索引類型會把行以一種沒有指定的且與實現(xiàn)相關(guān)的順序返回。 B-tree索引默認(rèn)將表項以升序方式存儲逝撬,并將空值放在最后 (在其他相等的項之間浴骂,表TID被視為平分符列)。我們可以在創(chuàng)建B-tree索引時通過下列選項來改變索引的排序

ASC宪潮,指定上升排序(默認(rèn))溯警。

DESC,指定下降排序狡相。

NULLS FIRST梯轻,指定把空值排序在非空值前面。在指定DESC時尽棕, 這是默認(rèn)行為喳挑。

NULLS LAST,指定把空值排序在非空值后面滔悉。在沒有指定DESC時伊诵, 這是默認(rèn)行為。

那么典型的示例就是:

CREATE INDEX test2_info_nulls_low ON test2 (info NULLS FIRST);CREATE INDEX test3_desc_index ON test3 (id DESC NULLS LAST);

4回官、創(chuàng)建hash索引

Hash索引只能處理簡單等值比較曹宴。不論何時當(dāng)一個索引列涉及到一個使用了=操作符的比較時,查詢規(guī)劃器將考慮使用一個Hash索引歉提。下面的命令將創(chuàng)建一個Hash索引:

CREATE INDEX name ON table USING HASH (column);

5笛坦、創(chuàng)建函數(shù)索引

基于函數(shù)的索引時將索引建立在某個函數(shù)或者表達(dá)式的基礎(chǔ)上。一個索引列并不一定是底層表的一個列唯袄,也可以是從表的一列或多列計算而來的一個函數(shù)或者標(biāo)量表達(dá)式弯屈。這種特性對于根據(jù)計算結(jié)果快速獲取表中內(nèi)容是有用的。

有一些查詢恋拷,需要對表的列進(jìn)行計算资厉,此時就適合創(chuàng)建基于函數(shù)的索引。例如蔬顾,一種進(jìn)行大小寫不敏感比較的常用方法是使用lower函數(shù):

SELECT * FROM test1 WHERE lower(col1) = 'value';

由于col1沒有索引宴偿,在執(zhí)行語句時就需要先把列的值修改為小寫,再和value進(jìn)行匹配诀豁。為了加快速度窄刘,可以再col1列上創(chuàng)建索引,先對該列的值進(jìn)行小寫轉(zhuǎn)換舷胜,然后再把索引存儲在索引中娩践,這樣執(zhí)行查詢時就不再需要轉(zhuǎn)換。函數(shù)結(jié)果之上的索引:

CREATE INDEX test1_lower_col1_idx ON test1 (lower(col1));

如果我們將該索引聲明為UNIQUE,它將阻止創(chuàng)建在col1值上只有大小寫不同的行

6翻伺、創(chuàng)建多列索引

一個索引可以定義在表的多個列上材泄。

例如,我們有這樣一個表:

CREATE TABLE test2(? major int,? minor int,? name varchar);

如果我們經(jīng)常根據(jù)多列的相交(通常為多個and操作)或者聯(lián)合(通常為多個or操作)操作做查詢時吨岭,例如從表test2中查詢major和minor均為常量constant的name信息:

SELECT name FROM test2 WHERE major = constant AND minor = constant;

那么我們可以在major和minor上定義一個多列索引:

CREATE INDEX test2_mm_idx ON test2 (major, minor);

相比于在每個列上創(chuàng)建索引拉宗,多列索引占用的磁盤相對更少,索引數(shù)據(jù)更新時也將更快辣辫。目前旦事,只有 B-tree、Bitmap急灭、GiST姐浮、GIN 和 BRIN 索引類型支持多列索引,最多可以指定512個列葬馋。

6单料、修改或重建索引

通過ALTER INDEX或者REINDEX語句,可以實現(xiàn)修改索引的定義或者重建索引点楼。

可以實現(xiàn)如下功能:

更改索引的名稱

更改該索引的表空間為其他指定的表空間

把該索引標(biāo)記為依賴于擴展

把和主表有相同表結(jié)構(gòu)的主表變成該主表的一個分區(qū)

更改一個或者多個索引相關(guān)的存儲參數(shù)

重置存儲參數(shù)為默認(rèn)值

為索引設(shè)置統(tǒng)計信息收集目標(biāo)

重建索引

注意

不能更改索引列結(jié)構(gòu)扫尖。

具體的修改索引典型示例如下:

重命名一個現(xiàn)有索引:

ALTER INDEX distributors RENAME TO new_distributors;

把一個索引移動到一個不同的表空間:

ALTER INDEX distributors SET TABLESPACE fasttablespace;

更改一個索引的填充因子(假設(shè)該索引方法支持填充因子):

ALTER INDEX distributors SET (fillfactor = 75);REINDEX INDEX distributors;

為一個表達(dá)式索引設(shè)置統(tǒng)計信息收集目標(biāo):

CREATE INDEX coord_idx ON measured (x, y, (z + t));

ALTER INDEX coord_idx ALTER COLUMN 3 SET STATISTICS 1000;

重建單個索引:

REINDEX INDEX my_index;

重建表my_table上的所有索引:

REINDEX TABLE my_table;

KingbaseES將重新構(gòu)建索引,而不采取任何鎖來防止表上的并發(fā)插入掠廓、更新或刪除:

REINDEX TABLE CONCURRENTLY my_broken_table;

7换怖、刪除索引

可以使用DROP INDEX語句刪除索引。要執(zhí)行這個命令你必須是該索引的擁有者蟀瞧。

刪除索引的一些原因包括:

不再需要該索引沉颂;

該索引未能實現(xiàn)預(yù)期的性能改進(jìn)。例如悦污,表可能非常兄搿;

應(yīng)用程序不使用索引來查詢數(shù)據(jù)切端;

索引已無效彻坛,必須在重新生成之前刪除該索引;

當(dāng)您刪除一個索引時踏枣,該索引的在表空間上的所有索引段將得到釋放昌屉。刪除索引主要有兩大類情況,如果使用CREATE INDEX語句顯式創(chuàng)建索引茵瀑,則可以用DROP INDEX語句刪除該索引间驮。 如下面的語句刪除emp_ename索引:

DROP INDEX emp_ename;

如果是通過在表上定義鍵約束隱式的創(chuàng)建索引。則不能直接刪除與已啟用的UNIQUE KEY鍵或PRIMARY KEY鍵約束相關(guān)的索引马昨。此情況竞帽,必須停用或刪除該約束本身扛施。 如下面的語句刪除主鍵約束pk_emp_name,同時刪除其對應(yīng)的索引:

ALTER TABLE emp DROP CONSTRAINT pk_emp_name;

當(dāng)然屹篓,刪除表也能實現(xiàn)刪除索引煮嫌,將自動刪除了所有與該表相關(guān)的索引。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抱虐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饥脑,更是在濱河造成了極大的恐慌恳邀,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灶轰,死亡現(xiàn)場離奇詭異谣沸,居然都是意外死亡,警方通過查閱死者的電腦和手機笋颤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門乳附,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伴澄,你說我怎么就攤上這事赋除。” “怎么了非凌?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵举农,是天一觀的道長。 經(jīng)常有香客問我敞嗡,道長颁糟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任喉悴,我火速辦了婚禮棱貌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘箕肃。我一直安慰自己婚脱,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布勺像。 她就那樣靜靜地躺著起惕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪咏删。 梳的紋絲不亂的頭發(fā)上惹想,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音督函,去河邊找鬼嘀粱。 笑死激挪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锋叨。 我是一名探鬼主播垄分,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼娃磺!你這毒婦竟也來了薄湿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤偷卧,失蹤者是張志新(化名)和其女友劉穎豺瘤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體听诸,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡鹏控,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年伟恶,在試婚紗的時候發(fā)現(xiàn)自己被綠了儒溉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毯辅。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖仔蝌,靈堂內(nèi)的尸體忽然破棺而出泛领,到底是詐尸還是另有隱情,我是刑警寧澤敛惊,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布师逸,位于F島的核電站,受9級特大地震影響豆混,放射性物質(zhì)發(fā)生泄漏篓像。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一皿伺、第九天 我趴在偏房一處隱蔽的房頂上張望员辩。 院中可真熱鬧,春花似錦鸵鸥、人聲如沸奠滑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宋税。三九已至,卻和暖如春讼油,著一層夾襖步出監(jiān)牢的瞬間杰赛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工矮台, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留乏屯,地道東北人根时。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像辰晕,于是被迫代替她去往敵國和親蛤迎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容