重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
為企業(yè)提供網(wǎng)站建設、域名注冊、服務器等服務
復合主鍵就是用2個或2個以上的字段組成主鍵。用這個主鍵包含的字段作為主鍵,這個組合在數(shù)據(jù)表中是唯一,且加了主鍵索引。
在杞縣等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設 網(wǎng)站設計制作按需求定制網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站建設,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站制作,杞縣網(wǎng)站建設費用合理。
可以這么理解,比如,你的訂單表里有很多字段,一般情況只要有個訂單號bill_no做主鍵就可以了,但是,現(xiàn)在要求可能會有補充訂單,使用相同的訂單號,那么這時單獨使用訂單號就不可以了,因為會有重復。那么你可以再使用個訂單序列號bill_seq來作為區(qū)別。把bill_no和bill_seq設成復合主鍵。即使bill_no相同,bill_seq不同也是可以的。
聯(lián)合主鍵的設置方法:
打開navicat工具,連接上mysql服務器,選擇完數(shù)據(jù)庫之后,選擇一個表右擊選擇設計表(這里為了演示測試,隨便選擇一個表即可)。
在設計表頁面,可以看到當前表的所有字段信息,我們選擇的學生表有一個id字段,目前該表沒有主鍵字段。
在最后一列右擊選擇主鍵,即可將該字段設置為主鍵,也可以直接點擊鼠標左鍵,可以快速添加和取消主鍵。
設置完主鍵之后,可以看到一把鎖的標識,并且有一個1字,因為一個表可以給多個字段添加主鍵,則為聯(lián)合主鍵,這樣就顯示為主鍵1,主鍵2等。
表button?
CREATE TABLE `button` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,? --主鍵索引
`button_name` varchar(45) NOT NULL COMMENT '功能名稱',
`app_id` bigint(20) NOT NULL,
`permission_id` bigint(20) DEFAULT NULL,? -- permission_id 和 app_id 聯(lián)合索引。
`api_id` bigint(20) NOT NULL, --api_id單獨索引
PRIMARY KEY (`id`),
KEY `index_app_permission_lianhe` (`permission_id`,`app_id`) USING BTREE,
KEY `index_api_id_dange` (`api_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
主鍵索引,單獨索引,組合索引使用場景及優(yōu)化
表button 有3個索引,分別是:id主鍵,聯(lián)合索引(permission_id,app_id),api_id(單列索引)
button_name 無索引
查詢where條件中:
主鍵索引:
1、主鍵索引與聯(lián)合索引同時存在,使用主鍵索引
2、主鍵索引與單個索引同時存在,使用主鍵索引
結論:只要主鍵索引在,使用主鍵索引。
聯(lián)合索引 :
1、聯(lián)合索引與單列索引列 同時存在,使用單列索引
2、聯(lián)合索引中列順序顛倒無影響。
3、聯(lián)合索引實行最左側原則,即:單獨查詢條件中只有permission_id可以使用聯(lián)合索引,單獨查詢條件中只有app_id不實用聯(lián)合索引。
4、如果查詢條件中只有app_id,但是select 條件中有 permission_id,則也使用聯(lián)合索引。
5、select id,app_id from button where app_id=1001; 使用聯(lián)合索引
6、explain select id,app_id,button_name from button where app_id=1001;不使用聯(lián)合索引
結論:索引優(yōu)先級:主鍵索引,單列索引,組合索引
聯(lián)合索引中遵從最左側列原則。
當查詢條件和返回結果中僅僅包含聯(lián)合索引中索引項,也使用聯(lián)合索引。如第4條。
當查詢條件中出現(xiàn)聯(lián)合索引中非最左側索引列,返回結果中含義聯(lián)合索引中的列或者主鍵則也使用聯(lián)合索引。
單個索引:
1、查詢條件中有單列索引,則使用,無不使用。
事例:
復合主鍵就是指你表的主鍵含有一個以上的字段組成 。 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的id和name字段組合起來就是你test表的復合主鍵 (若其一為單索引字段時,左邊的id才會有索引) 它的出現(xiàn)是因為你的name字段可能會出現(xiàn)重名,所以要加上ID字段這樣就可以保證你記錄的唯一性 一般情況下,主鍵的字段長度和字段數(shù)目要越少越好
聯(lián)合主鍵,顧名思義就是多個主鍵聯(lián)合形成一個主鍵組合,體現(xiàn)在聯(lián)合。 (主鍵原則上是唯一的,別被唯一值所困擾。) 索引可以極大的提高數(shù)據(jù)的查詢速度,但是會降低插入、刪除、更新表的速度,因為在執(zhí)行這些寫操作時,還要操作索引文件。 簡單的例子 主鍵A跟主鍵B組成聯(lián)合主鍵 主鍵A跟主鍵B的數(shù)據(jù)可以完全相同(困擾吧,沒關系),聯(lián)合就在于主鍵A跟主鍵B形成的聯(lián)合主鍵是唯一的。
聯(lián)合主鍵體現(xiàn)在多個表上,復合主鍵體現(xiàn)在一個表中的多個字段
復合主鍵: