对oracle中的sql语句的理解与不解

来源:互联网 发布:银联数据服务 编辑:程序博客网 时间:2024/06/06 03:43

      近期由于做前端经常要查询数据库,根据不同的条件查询的数据并展示。这里就遇到了一些sql语句的一些问题,现进行总结整理。

先将一开始我的sql语句贴出来,其中model表是查询的主要信息表,然后在not  exists中查询的是结果集是trBomPackageBiw中出现过的model的id,

   现在的问题是where的第一个条件单独运行可以得到我想要的结果,查询需要的时间在2秒左右,or后面的条件单独运行也可以得到我想要的结果,需要的时间在1秒左右,现在我想将2个单独查询的结果进行合并,也就是下面的sql语句,不报错,但是查询时间超长,我登了5分钟也没出结果,后面就放弃了,但我不明白哪里的问题?

SELECT distinct model.ID                   id,                model.STR_SEQUENCE         strSequence,                model.INSTANCE_NAME_ZH     instanceNameZh,                model.INSTANCE_NAME_EN     instanceNameEn,                model.PBOM_ID              pBomId,                model.VARIATE_CONDITION    variateCondition,                model.SVPPS                svpps,                model.SHORT_SVPPS          shortSvpps,                model.FFC                  ffc,                model.FFC_DESCRIPTION_ZH   ffcDescriptionZh,                model.FFC_DESCRIPTION_EN   ffcDescriptionEn,                model.FFC_ID               ffcId,                model.PART_TYPE            partType,                model.PARENT_ID            parentId,                model.ENGINEERING_LEVEL    engineeringLevel,                model.PART_INDENTIFICATION partIndentification,                model.QUANTITY             quantity,                model.THICKNESS            thickness,                model.OLD_PART_NUMBER      oldPartNumber,                model.ThirdD_PART_NUMBER   thirdDPartNumber,                model.ThirdD_PART_VERSION  thirdDPartVersion,                model.PART_STATUS          partStatus,                model.PART_PHASE           partPhase,                model.SYMMETRY             symmetry,                model.SYMMETRY_PART_NUMBER symmetryPartNumber,                model.PARENT_PART          parentPart,                model.PART_SOURCE          partSource,                model.SW_IMPORT            swImport,                model.EWO_ID               ewoId,                pbom.PART_NUMBER           partNumber  FROM BOP_TM_BIW_BOM model                         LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID  LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id =                                                      trBomPackageBiw.BIW_BOM_ID  LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID =                                           trBomPackageBiw.Package_Id where       not exists(             SELECT distinct  trBomPackageBiw.Biw_Bom_Id              from Bop_Tr_Bom_Package_Biw trBomPackageBiw              where model.id=trBomPackageBiw.Biw_Bom_Id             )AND model.DATASET_ID = 2000039              or              (bopTmpackage.PACKAGE_CODE = 18990 AND       trBomPackageBiw.RELEATION_TYPE != '0')              ORDER BY model.STR_SEQUENCE
后来我又用了union语句,分别查询在合并就可以了,速度很快,但这里要注意的是,我需要对查询的数据进行排序,然后我就用了order by model.strSTR_SEQUENCE语句,发现报错,进过百度知道order by 和union不能一起用,但是用order by 数字(此数字对应需要排序的字段的位置数)就可以。

还有一点union是数据集的合并,INTERSECT是数据集的交集,其他具体的可以看此处链接。oracle基础

ELECT distinct model.ID                   id,                model.STR_SEQUENCE         strSequence,                model.INSTANCE_NAME_ZH     instanceNameZh,                model.INSTANCE_NAME_EN     instanceNameEn,                model.PBOM_ID              pBomId,                model.VARIATE_CONDITION    variateCondition,                model.SVPPS                svpps,                model.SHORT_SVPPS          shortSvpps,                model.FFC                  ffc,                model.FFC_DESCRIPTION_ZH   ffcDescriptionZh,                model.FFC_DESCRIPTION_EN   ffcDescriptionEn,                model.FFC_ID               ffcId,                model.PART_TYPE            partType,                model.PARENT_ID            parentId,                model.ENGINEERING_LEVEL    engineeringLevel,                model.PART_INDENTIFICATION partIndentification,                model.QUANTITY             quantity,                model.THICKNESS            thickness,                model.OLD_PART_NUMBER      oldPartNumber,                model.ThirdD_PART_NUMBER   thirdDPartNumber,                model.ThirdD_PART_VERSION  thirdDPartVersion,                model.PART_STATUS          partStatus,                model.PART_PHASE           partPhase,                model.SYMMETRY             symmetry,                model.SYMMETRY_PART_NUMBER symmetryPartNumber,                model.PARENT_PART          parentPart,                model.PART_SOURCE          partSource,                model.SW_IMPORT            swImport,                model.EWO_ID               ewoId,                pbom.PART_NUMBER           partNumber  FROM BOP_TM_BIW_BOM model  LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID  LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id = trBomPackageBiw.BIW_BOM_ID  LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID =trBomPackageBiw.Package_Id where       not exists(             SELECT distinct  trBomPackageBiw.Biw_Bom_Id             from Bop_Tr_Bom_Package_Biw trBomPackageBiw              where model.id=trBomPackageBiw.Biw_Bom_Id             )AND model.DATASET_ID = 2000039            union            SELECT distinct model.ID                   id,                model.STR_SEQUENCE         strSequence,                model.INSTANCE_NAME_ZH     instanceNameZh,                model.INSTANCE_NAME_EN     instanceNameEn,                model.PBOM_ID              pBomId,                model.VARIATE_CONDITION    variateCondition,                model.SVPPS                svpps,                model.SHORT_SVPPS          shortSvpps,                model.FFC                  ffc,                model.FFC_DESCRIPTION_ZH   ffcDescriptionZh,                model.FFC_DESCRIPTION_EN   ffcDescriptionEn,                model.FFC_ID               ffcId,                model.PART_TYPE            partType,                model.PARENT_ID            parentId,                model.ENGINEERING_LEVEL    engineeringLevel,                model.PART_INDENTIFICATION partIndentification,                model.QUANTITY             quantity,                model.THICKNESS            thickness,                model.OLD_PART_NUMBER      oldPartNumber,                model.ThirdD_PART_NUMBER   thirdDPartNumber,                model.ThirdD_PART_VERSION  thirdDPartVersion,                model.PART_STATUS          partStatus,                model.PART_PHASE           partPhase,                model.SYMMETRY             symmetry,                model.SYMMETRY_PART_NUMBER symmetryPartNumber,                model.PARENT_PART          parentPart,                model.PART_SOURCE          partSource,                model.SW_IMPORT            swImport,                model.EWO_ID               ewoId,                pbom.PART_NUMBER           partNumber  FROM BOP_TM_BIW_BOM model  LEFT JOIN BOP_TM_PBOM pbom ON pbom.ID = model.PBOM_ID  LEFT JOIN BOP_TR_BOM_PACKAGE_BIW trBomPackageBiw on model.id =trBomPackageBiw.BIW_BOM_ID  LEFT JOIN BOP_TM_PACKAGE bopTmpackage on bopTmpackage.ID = trBomPackageBiw.Package_Id  where  bopTmpackage.PACKAGE_CODE = 18990 AND         trBomPackageBiw.RELEATION_TYPE != '0'         ORDER BY  2



0 0
原创粉丝点击