網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
唯一索引在列中不允許重復(fù)的值出現(xiàn),可以用來(lái)定義和約束表中的一列或者多列組合值,在執(zhí)行insert和update語(yǔ)句時(shí)需要檢查唯一性。GBase8s中主鍵(PRIMARY KEY)會(huì)自動(dòng)創(chuàng)建一個(gè)唯一索引。一個(gè)良好的表設(shè)計(jì)都應(yīng)該定義主鍵或者唯一約束索引。特別是在OLTP系統(tǒng)中,唯一索引可以幫助快速定位少量記錄。
唯一索引的創(chuàng)建語(yǔ)法:
CREATE UNIQUE INDEX idx_name ON tabname(col);
或者
CREATE DISTINCT INDEX idx_name ON tabname(col);
非唯一索引(可重復(fù)索引)可以在非主鍵列中創(chuàng)建,允許在列中出現(xiàn)重復(fù)的數(shù)據(jù)。但需要避免子鍵過(guò)于重復(fù)的數(shù)據(jù)列上創(chuàng)建索引,因?yàn)橹貜?fù)值越多的索引,其效率越低。
唯一索引與非唯一索引的實(shí)例圖如下:
注意:由于需要在insert、update時(shí)進(jìn)行唯一性判斷,所以不建議在一個(gè)表上創(chuàng)建多個(gè)唯一索引。為了確保唯一性要求,一般在一張表中創(chuàng)建唯一索引就足夠了。
補(bǔ)充:GBase 8s數(shù)據(jù)庫(kù)表和主鍵索引使用的空間分離方法
GBase 8s數(shù)據(jù)庫(kù)創(chuàng)建主鍵時(shí)一般情況下有兩種方法:
1,創(chuàng)建表時(shí)指定主鍵,如:
create table tab1 ( ? id int, ? name varchar(255), ? primary key(id) ) in datadbs01;
2,使用alter語(yǔ)句修改表結(jié)構(gòu)的方式創(chuàng)建主鍵
create table tab1 ( ? id int, ? name varchar(255) ) in datadbs01; alter table tab1 add constraint primary key(id);
這兩種方法都無(wú)法為主鍵自動(dòng)創(chuàng)建的索引指定單獨(dú)的空間。
其實(shí)有一種變通的方式,可以將表使用的空間和主鍵索引使用的空間分離開,需要在方法2前加上創(chuàng)建唯一索引(即:不讓alter table add primary key自動(dòng)創(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);
原文鏈接:https://blog.csdn.net/qq_54583279/article/details/122615784
相關(guān)推薦
- 2023-03-30 一鍵移除ButterKnife并替換為ViewBinding的舊項(xiàng)目拯救_Android
- 2023-03-03 Oracle中trunc()函數(shù)實(shí)例詳解_oracle
- 2022-09-25 linux系統(tǒng)下oracle數(shù)據(jù)庫(kù)的導(dǎo)入導(dǎo)出
- 2022-06-20 C語(yǔ)言中數(shù)據(jù)是如何存儲(chǔ)在內(nèi)存中的_C 語(yǔ)言
- 2022-08-17 詳解.NET中負(fù)載均衡的使用_實(shí)用技巧
- 2022-05-12 Kotlin zip函數(shù) 合并成鍵值對(duì)
- 2022-05-10 錯(cuò)誤解決 刪除同名Maven Module,重新建立顯示ignored pom.xml問(wèn)題
- 2022-10-29 python中正則表達(dá)式findall的用法實(shí)例_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支