两个表
emp(person_id, time) 
sec(sec_id, sec_name, person_id) //一个员工可能供职于多个部门,所以要这么设计SELECT emp.person_id, sec.sec_id, emp.time FROM emp INNER JOIN sec USING(person_id) WHERE sec.sec_id = 2 ORDER BY emp.time DESC LIMIT 0, 10;本语句旨在列出第二部门中资历最新的10个人,加以降薪!如果在sec表中加上time字段,如:sec(sec_id, sec_name, person_id, time),并建立emp(sec_id, time) 上的索引,可以用以下语句在第一时间中筛选出根据时间顺序排序的结果:
SELECT emp.person_id, sec.sec_id, emp.time FROM emp INNER JOIN sec USING(person_id) WHERE sec.sec_id = 2 ORDER BY sec.time DESC LIMIT 0, 10;但如此的话,不符合范式,造成冗余!我想,mysql有没有机制能够建立 (sec.sec_id, emp.time)的索引并映射sec表,从而加快检索效率?(从而避免不用在sec中增加字段,增加一个time仅仅用来加快速度,实在是不符合业务逻辑,没别的什么用)