mysql 聯合主鍵的作用 索引的作用

2021-08-19 16:04:29 字數 1453 閱讀 6128

聯合主鍵就是用2個或2個以上的字段組成主鍵。用這個主鍵包含的字段作為主鍵,這個組合在資料表中是唯一,且加了主鍵索引。

可以這麼理解,比如,你的訂單表裡有很多字段,一般情況只要有個訂單號bill_no做主鍵就可以了,但是,現在要求可能會有補

充訂單,使用相同的訂單號,那麼這時單獨使用訂單號就不可以了,因為會有重複。那麼你可以再使用個訂單序列號bill_seq來

作為區別。把bill_no和bill_seq設成聯合主鍵。即使bill_no相同,bill_seq不同也是可以的。

alter table 表 add constraint pk_name primary key (列1,列2,...)

聯合主鍵的好處是不需要因為需要主鍵而增加乙個無用的主鍵列 例如如果不用聯合主鍵你必須增加個列id設定主鍵 但這個id列

無任何作用 至於在什麼情況下使用,就像剛才舉例的,當你這個表的主鍵id無任何用處,那麼就用聯合主鍵好了,你可以節約

乙個列的空間,但如果這錶的id列要做為別的表的外來鍵的話,就不能用聯合主鍵了。

聯合主鍵就是確定一條記錄的唯一性啊

比如這種時候

商品品牌 商品型號

諾基亞920

三星 note2

諾基亞 8088

比如這樣商品品牌可能有重複,都是諾基亞,但是諾基亞廠商生產的商品型號是不會重複的

也比如,可能好多品牌都有920這個型號,但是乙個品牌只有乙個920的型號

所以就靠這樣的聯合主鍵來確定這條記錄的唯一性

什麼是索引?為什麼建立索引?

索引用於快速找出在某個列中有一特定值的行,不使用索引,mysql必須從第一條記錄開始讀完整個表,直到找出相關的行,表越大,查詢資料所花費的時間就越多,如果表中查詢的列有乙個索引,mysql能夠快速到達乙個位置去搜尋資料檔案,而不必檢視所有資料,那麼將會節省很大一部分時間。

例如:有一張person表,其中有2w條記錄,記錄著2w個人的資訊。有乙個phone的字段記錄每個人的**號碼,現在想要查詢出**號碼為***x的人的資訊。

如果沒有索引,那麼將從表中第一條記錄一條條往下遍歷,直到找到該條資訊為止。

如果有了索引,那麼會將該phone欄位,通過一定的方法進行儲存,好讓查詢該字段上的資訊時,能夠快速找到對應的資料,而不必在遍歷2w條資料了。其中mysql中的索引的儲存型別有兩種:btree、hash。 也就是用樹或者hash值來儲存該欄位,要知道其中詳細是如何查詢的,就需要會演算法的知識了。我們現在只需要知道索引的作用,功能是什麼就行。

使用原則:

1、對經常更新的表就避免對其進行過多的索引,對經常用於查詢的字段應該建立索引,

2、資料量小的表最好不要使用索引,因為由於資料較少,可能查詢全部資料花費的時間比遍歷索引的時間還要短,索引就可能不會產生優化效果。

3、在一同值少的列上(欄位上)不要建立索引,比如在學生表的"性別"欄位上只有男,女兩個不同值。相反的,在乙個欄位上不同值較多可是建立索引。

mysql聯合索引的作用域

explain 解釋 explain顯示了mysql如何使用索引來處理select語句以及連線表。可以幫助選擇使用更優的索引以及優化查詢語句。使用方法 在select語句前面加上 explain 命令即可。如下 explain select from t test where status 0 以下...

聯合主鍵SQL 聯合索引

聯合主鍵索引 聯合索引 alter table dbo tb shop add constraint shopno unique nonclustered shopgid asc prodgid asc skugid asc with pad index off,statistics norecom...

Mysql的聯合主鍵

摘要 mysql的聯合主鍵 用2個字段 或者多個字段,後面具體都是用2個字段組合 來確定一條記錄,說明,這2個字段都不是唯一的,2個字段可以分別重複,這麼設定的好處,可以很直觀的看到某個重複欄位的記錄條數。mysql的聯合主鍵 用2個字段 或者多個字段,後面具體都是用2個字段組合 來確定一條記錄,說...