淺析GBase8s?唯一索引與非唯一索引問題
唯一索引在列中不允許重復(fù)的值出現(xiàn),可以用來定義和約束表中的一列或者多列組合值,在執(zhí)行insert和update語句時需要檢查唯一性。GBase8s中主鍵(PRIMARY KEY)會自動創(chuàng)建一個唯一索引。一個良好的表設(shè)計都應(yīng)該定義主鍵或者唯一約束索引。特別是在OLTP系統(tǒng)中,唯一索引可以幫助快速定位少量記錄。
唯一索引的創(chuàng)建語法:
CREATE UNIQUE INDEX idx_name ON tabname(col);
或者
CREATE DISTINCT INDEX idx_name ON tabname(col);
非唯一索引(可重復(fù)索引)可以在非主鍵列中創(chuàng)建,允許在列中出現(xiàn)重復(fù)的數(shù)據(jù)。但需要避免子鍵過于重復(fù)的數(shù)據(jù)列上創(chuàng)建索引,因?yàn)橹貜?fù)值越多的索引,其效率越低。
唯一索引與非唯一索引的實(shí)例圖如下:

注意:由于需要在insert、update時進(jìn)行唯一性判斷,所以不建議在一個表上創(chuàng)建多個唯一索引。為了確保唯一性要求,一般在一張表中創(chuàng)建唯一索引就足夠了。
補(bǔ)充:GBase 8s數(shù)據(jù)庫表和主鍵索引使用的空間分離方法
GBase 8s數(shù)據(jù)庫創(chuàng)建主鍵時一般情況下有兩種方法:
1,創(chuàng)建表時指定主鍵,如:
create table tab1 ( ? id int, ? name varchar(255), ? primary key(id) ) in datadbs01;
2,使用alter語句修改表結(jié)構(gòu)的方式創(chuàng)建主鍵
create table tab1 ( ? id int, ? name varchar(255) ) in datadbs01; alter table tab1 add constraint primary key(id);
這兩種方法都無法為主鍵自動創(chuàng)建的索引指定單獨(dú)的空間。
其實(shí)有一種變通的方式,可以將表使用的空間和主鍵索引使用的空間分離開,需要在方法2前加上創(chuàng)建唯一索引(即:不讓alter table add primary key自動創(chuàng)建索引,而是使用剛創(chuàng)建的唯一索引),具體如下:
-- 創(chuàng)建表,使用datadbs01空間 create table tab1 ( ? id int, ? name varchar(255) ) in datadbs01; -- 創(chuàng)建唯一索引,使用indexdbs01空間 create unique index ix_tab1_id on tab1(id) in indexdbs01; -- 修改表,創(chuàng)建主鍵(關(guān)聯(lián)唯一索引) alter table tab1 add constraint primary key(id);
到此這篇關(guān)于GBase8s 唯一索引與非唯一索引的文章就介紹到這了,更多相關(guān)GBase8s 索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
高效的數(shù)據(jù)同步工具DataX的使用及實(shí)現(xiàn)示例
這篇文章主要為大家介紹了高效的數(shù)據(jù)同步工具DataX的使用及實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
數(shù)據(jù)庫查詢性能需注意幾點(diǎn)經(jīng)驗(yàn)
這篇文章主要介紹在程序編程中,需要注意數(shù)據(jù)庫的性能問題,否則會導(dǎo)致數(shù)據(jù)庫與頁面打開都很慢2013-05-05
在PostgreSQL中使用數(shù)組時值得注意的一些地方
這篇文章主要介紹了在PostgreSQL中使用數(shù)組時值得注意的一些地方,包括如何提高輸入性能,需要的朋友可以參考下2015-04-04
程序員應(yīng)該知道的數(shù)據(jù)庫設(shè)計的兩個誤區(qū)
在幾乎所有的企業(yè)級應(yīng)用程序中,包括各種MIS、ERP、CRM等等,都會使用數(shù)據(jù)庫,這樣的好處是顯而易見的,很容易地實(shí)現(xiàn)了數(shù)據(jù)層和業(yè)務(wù)邏輯層的分離,而且對于性能的優(yōu)化也在一定程度上提供了便利。2010-07-07
詳解數(shù)據(jù)庫中跨庫數(shù)據(jù)表的運(yùn)算
跨庫數(shù)據(jù)表,是指邏輯上同一張數(shù)據(jù)表被分別存儲在不同數(shù)據(jù)庫中。接下來通過本文給大家介紹數(shù)據(jù)庫中跨庫數(shù)據(jù)表的運(yùn)算方法,感興趣的朋友跟隨小編一起看看吧2018-11-11
一篇文章帶你了解數(shù)據(jù)庫中g(shù)roup by的用法
這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)庫中g(shù)roup by的法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用數(shù)據(jù)庫具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
解決Navicat Premium 12連接Oracle時提示oracle library is not loaded的
這篇文章主要介紹了解決Navicat Premium 12連接Oracle時提示oracle library is not loaded的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12

