
如下定义
CREATE TABLE `salaries` ( `emp_no` int(11) NOT NULL, `salary` int(11) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL, PRIMARY KEY (`emp_no`,`from_date`), KEY `emp_no` (`emp_no`), CONSTRAINT `salaries_ibfk_1` FOREIGN KEY (`emp_no`) REFERENCES `employees` (`emp_no`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1 同时有 PRIMARY KEY (emp_no,from_date), KEY emp_no (emp_no),
我觉得既然 emp_no 在 主键索引里 为何还要单独定义一个 key ?
1 billlee 2017-07-09 22:06:59 +08:00 大概是因为设计这个表的人没学过数据库原理吧 |
3 sunriseyuen 2017-07-09 22:54:23 +08:00 via Android 看上去员工号码+日期才是唯一的 |
4 leoli 2017-07-09 23:21:48 +08:00 |
6 wwqgtxx 2017-07-10 01:44:27 +08:00 via iPhone 那个 key 应该是当索引用的吧 |
7 choury 2017-07-10 02:03:03 +08:00 via Android |
8 11138 2017-07-10 02:04:15 +08:00 |
9 kn007 2017-07-10 07:40:01 +08:00 KEY `emp_no` (`emp_no`) 多余+1 |
10 huigeer 2017-07-10 09:22:26 +08:00 via iPhone innodb 这样建主键,dba 会哭晕。primkey 不是自增会影响 insert |
11 leoli 2017-07-10 09:40:00 +08:00 @lcorange 优化过程是什么?某个员工必须靠 emp_no 和 from_date(应该是入职时间吧)来确定,查这个员工靠主键就行了吧 |
12 lcorange 2017-07-10 10:18:04 +08:00 via Android |