CREATE?TABLE?seckill?(
??`seckill_id`??BIGINT???????NOT?NULL??AUTO_INCREMENT?COMMENT?'商品庫存id',
??`name`????????VARCHAR(120)?NOT?NULL?COMMENT?'商品名稱',
??`number`??????INT??????????NOT?NULL?COMMENT?'庫存數(shù)量',
??`start_time`??TIMESTAMP????NOT?NULL?COMMENT?'秒殺開啟時間',
??`end_time`????TIMESTAMP????NOT?NULL?COMMENT?'秒殺結束時間',
??`create_time`?TIMESTAMP???NOT?NULL?DEFAULT?CURRENT_TIMESTAMP??COMMENT?'創(chuàng)建時間',
??--索引
??PRIMARY?KEY?(seckill_id),
??KEY?idx_start_time(start_time),
??KEY?idx_end_time(end_time),
??KEY?idx_create_time(create_time)
)?ENGINE?=?innoDB???????????--只有innoDB引擎支持事務
??AUTO_INCREMENT?=?1000???--初始自增主鍵
??DEFAULT?CHARSET?=?utf8
??COMMENT?=?'秒殺庫存表';
??
??定義主鍵的下面那三句是干嘛的啊,好像是索引,索引拿來干嘛的?
2 回答
已采納

qq_連環(huán)_04358155
TA貢獻34條經驗 獲得超5個贊
首先,那三個就是索引,idx_start_time是索引名稱,括號里面的是對應的字段名。
接下來,索引是為了查找方便的,舉個例子,比如你要查找seckill_id=10,雖然你只要符合這個一個條件,但是數(shù)據(jù)庫默認查找是遍歷每一行的所有字段的,即其他的name、number。。。。這些字段也會被判斷一遍。
假如你將這個字段設置成了索引,那么在查找關于這個字段的條件時,就會只遍歷這個字段的屬性值,不會管其他字段,ok?
至于有人說無須掃描任何記錄就可以直接得到。。。這是不可能的,還是需要查找的,只是不需要無用的查找

添加回答
舉報
0/150
提交
取消