数据库性能优化
多个表关联的sql语句,如果某个关联的表只取个别字段,则子查询效率比表关联高一些。
以下的子查询取部门和职位的描述的写法,比直接关联部门和职位表取描述的效率高一些。
WITH TMP AS
(SELECT B.EMPLID,
B.EMPL_RCD,
B.setid_dept,
B.DEPTID,
B.HR_STATUS,
B.BUSINESS_UNIT,
B.POSITION_NBR,
B.EFFDT
FROM PS_JOB B
WHERE B.EFFDT = (SELECT MAX(B_ED.EFFDT)
FROM PS_JOB B_ED
WHERE B_ED.EMPLID = B.EMPLID
AND B_ED.EMPL_RCD = B.EMPL_RCD)
AND B.EFFSEQ = (SELECT MAX(B_ES.EFFSEQ)
FROM PS_JOB B_ES
WHERE B_ES.EMPLID = B.EMPLID
AND B_ES.EMPL_RCD = B.EMPL_RCD
AND B_ES.EFFDT = B.EFFDT))
SELECT SEC.OPRID,
A.EMPLID,
B.EMPL_RCD,
A.NAME,
A.NAME_AC,
B.HR_STATUS,
B.BUSINESS_UNIT,
B.DEPTID,
(SELECT C.DESCR
FROM PS_DEPT_TBL C
WHERE C.EFFDT = (SELECT MAX(EFFDT)
FROM PS_DEPT_TBL C_ED
WHERE B.SETID_DEPT = C.SETID
AND B.DEPTID = C.DEPTID
AND C_ED.SETID = C.SETID
AND C_ED.DEPTID = C.DEPTID
AND C_ED.EFFDT <= B.EFFDT)),
B.POSITION_NBR,
(SELECT D.DESCR
FROM PS_POSITION_DATA D
WHERE D.EFFDT = (SELECT MAX(EFFDT)
FROM PS_POSITION_DATA D_ED
WHERE B.POSITION_NBR = D.POSITION_NBR
AND D_ED.POSITION_NBR = D.POSITION_NBR
AND D_ED.EFFDT <= B.EFFDT))
FROM PS_EMPLMT_SRCF_QRY SEC, PS_NAMES A, TMP B
WHERE SEC.EMPLID = B.EMPLID
/* and b.emplid='20130581'*/
AND SEC.EMPL_RCD = B.EMPL_RCD
AND A.EMPLID = B.EMPLID
AND SEC.OPRID = 'PS'
and a.NAME LIKE '郭伟丽%'
PLSQL 查看执行计划
一般来说正常的优化器逻辑是先过滤数据(filter)然后再关联
统计信息更新会对执行效率有一定的影响
BEGIN
DBMS_STATS.GATHER_TABLE_STATS(ESTIMATE_PERCENT => DBMS_STATS.AUTO_SAMPLE_SIZE,
ownname => 'SYSADM',
tabname => 'PS_JOB',
METHOD_OPT => 'for all indexed columns',
DEGREE => DBMS_STATS.DEFAULT_DEGREE,
CASCADE => TRUE);
END;
创建序号用Oracle NEXTVAL
:
SQLExec("SELECT TRANSACTION_NBR.NEXTVAL FROM DUAL", &returnValue);
:
CREATE SEQUENCE "SYSADM"."TRANSACTION_NBR" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE ;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述