我必须修复一个设计很差的数据库。
问题:
一份工作广告有一个职位,但有许多合格的学位。
(例如,职称:分析员,资格:会计学位,金融学学位或商业学位)
表:
TableName: UniqueJobName列: jobName(char) uniqueJobUid(bigint)
TableName: UniqueDegree列: degreeName(char) degreeUid(bigint)
TableName:作业栏: jobName(char) jobUid(bigint),uniqueJobUid(bigint)
TableName: Job_Degree: jobUid(char) degreeName(char)
关系
单细胞瘤UniqueJobName.uniqueJobUid -> Jobs.uniqueJobUid
onetomany Jobs.Jobs> Job_Degree.jobUid
乔布斯和UniqueDegree之间没有任何关系。
技术要求
我不想在Job_Degree中为degreeUid创建一个列,而是创建一个新的表: UniqueJob_UniqueDegree_Job (这其中有我不想解释的原因)
UniqueJob_UniqueDegree_Job将有三列:
问题是作业表已经很大了,500,000行( Job_Degree表更大)
问题:考虑到语句的一部分是比较UniqueDegree.degreeName和Job_Degree.degreeName的char列,那么创建UniqueJob_UniqueDegree_Job表的最有效的SQL语句是什么?
任何提示都将不胜感激。
发布于 2017-06-25 07:24:25
select j.jobname, j.jobuid, ud.degreeid
into UniqueJob_UniqueDegree_Job
from jobs j
join job_degree jd on j.jobuid = jd.jobuid
join uniquedegree ud on ud.jobname = jd.jobname很难弄到大写字母等等,因为我用的是一文不值的手机。
然而,这应该做到这一点。注意:为了做选择.无法从表中创建数据类型(可以对select语句中的每个属性进行转换或强制转换,以确保数据类型正确无误。
如果表已经存在,则将查询更改为
insert Into ..
select ...
from .... 500 K行也相当小。我估计这不会超过几秒钟。
https://stackoverflow.com/questions/44743456
复制相似问题