復合主鍵中,第二個主鍵沒有生效

2021-09-29 05:28:46 字數 1973 閱讀 2162

復合主鍵

乙個表中的兩個主鍵

聯合主鍵

兩個表中的主鍵,用來確定唯一一條資料

主鍵是唯一性索引。其查詢效率高於一般索引

在使用復合索引的過程中,遇到一種情況,單獨使用第二個主鍵作為查詢條件,該主鍵不會作為索引生效。

表testtt

create

table

`testtt`

(`num`

varchar(22

)not

null

,`name`

varchar(22

)not

null

,`age`

varchar(22

)default

null

,primary

key(

`num`

,`name`))

engine

=innodb

default

charset

=utf8;

執行語句1

通過第乙個主鍵查詢

explain

select num,name,age from testtt where num=

'1'

執行語句2

通過第二個主鍵查詢

explain

select num,name,age from testtt where name=

'1'

執行語句3

兩個主鍵查詢,第二個主鍵在前,第乙個主鍵在後面

explain

select num,name,age from testtt where name =

'1'and num =

'1'

執行語句4

兩個主鍵查詢,第乙個主鍵在前,第二個主鍵在後面

explain

select num,name,age from testtt where num =

'1'and name =

'1'

第二種建表語句:

交換了復合主鍵的先後位置

create

table

`testtt`

(`num`

varchar(22

)not

null

,`name`

varchar(22

)not

null

,`age`

varchar(22

)default

null

,primary

key(

`name`

,`num`))

engine

=innodb

default

charset

=utf8;

執行語句1

通過第乙個主鍵查詢

explain

select num,name,age from testtt where name=

'1'

執行語句2

通過第二個主鍵查詢

explain

select num,name,age from testtt where num=

'1'

復合主鍵中,單獨使用第二個主鍵作為where條件,是不會作為索引去查詢的,需要將第二個主鍵定義為索引才會生效。

復合主鍵中,同時使用第乙個和第二個主鍵最為where條件兩個主鍵都會作為索引生效。

復合主鍵中,單獨使用第乙個主鍵作為where條件,是會作為索引生效的。

在sql前加上explain,可以檢視sql的執行計畫。

檔案系統中的第二個問題

在用大的buff讀取檔案的過程中,發現讀取無法正常結束,fileinfo的內容被破壞掉了.追查了半天,發現是filegetch函式中的一處小bug.在550行,handle findopenfilew fp drive,fp dirclus,fp name if handle這裡,如果該檔案沒有被 ...

關於正規表示式中replace的第二個引數

string.replace searchvalue,newvalue searchvalue 必須。規定子字串或要替換的模式的 regexp 物件。請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件。newvalue 必需。乙個字串值。規定了替換文...

查詢陣列中第二個大的數 微軟面試題

題目 給出乙個陣列,要求輸出陣列中第二個大的數 輸入 int a 輸出 34 題解思路 方法一 遍歷 1.定義最大值max初始化為a 0 第二大值為sec,遍歷陣列,如果陣列元素比max大就更新,max a i sec記錄上一次max的值 如果陣列元素不大於max,再將陣列元素和sec判斷,如果陣列...