SQL写的太长,效率不高,查询问题优化 5C

经理说,下面这个SQL可读性太差了,让我改改,看的我一脸懵逼,麻烦大神帮我改改。
SELECT YBB.JGBJLIST_CPMC AS CPMC,
YBB.{0} AS YBBJG,
MBBB.{0} AS MBBBJG,
YBB.JGBJLIST_CPID,
YBB.JGBJLIST_PARENTID,
(MBBB.{0}-YBB.{0}) as JDC,
case when YBB.{0}=0 then '0%' else round(((MBBB.{0}-YBB.{0})/YBB.{0})*100,2) ||'%' end as XDC
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID =:YBBID
AND MBBB.JGBJLIST_BJBBID =:MBBBID
UNION ALL
SELECT BJ.JGBJLIST_CPMC AS CPMC, BJ.{0} AS YBBJG, null AS MBBBJG,BJ.JGBJLIST_CPID,
BJ.JGBJLIST_PARENTID,
(0-BJ.{0}) as JDC,
case when BJ.{0}=0 then '0%' else round(((0-BJ.{0})/BJ.{0})*100,2) ||'%' end as XDC
FROM JGBJLIST BJ
WHERE BJ.JGBJLIST_CPID NOT IN
(SELECT YBB.JGBJLIST_CPID
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID =:YBBID
AND MBBB.JGBJLIST_BJBBID =:MBBBID )
AND JGBJLIST_BJBBID =:YBBID
UNION ALL
SELECT BJ.JGBJLIST_CPMC AS CPMC, null AS YBBJG, BJ.{0} AS MBBBJG,BJ.JGBJLIST_CPID,
BJ.JGBJLIST_PARENTID,
(BJ.{0}-0) as JDC,
'0%'as XDC
FROM JGBJLIST BJ
WHERE BJ.JGBJLIST_CPID NOT IN
(SELECT YBB.JGBJLIST_CPID
FROM JGBJLIST YBB
LEFT JOIN JGBJLIST MBBB
ON YBB.JGBJLIST_CPID = MBBB.JGBJLIST_CPID
WHERE YBB.JGBJLIST_BJBBID = :YBBID
AND MBBB.JGBJLIST_BJBBID = :MBBBID )
AND JGBJLIST_BJBBID =:MBBBID

sql

10个回答

在写sql时,尽量避免参数在数据库端进行运算,尽量将计算逻辑放到程序中去处理;
case when 看下能不能去掉
not in 中的数据 能否直接传入,不要直接去查询
避免过多的子查询,希望能帮到你

业务太复杂建议使用存储过程

不考虑存储效率的话,可以考虑建新表,多表关联的方式,这样可以加强可读性。

把公用表先查询,做成临时表或者变量表,每张表注释好,然后在这些表的基础上再做二次查询,这样可读性就能大幅提升

拆分SQL
中间表
使用业务处理SQL的业务

可以先把带有的查询条件的查出来,剩余的一些需要字段可以额外在重新查一次

可以考虑建新表,多表关联

业务拆分、写子查询。

考虑下写成函数?两个括号内侧select查询重复了。而且没太懂第2,3个select中的not in想做什么,逻辑是从JGBJLIST中选出CPID不在 [ JGBJLIST左结合 JGBJLIST ](为什么同一张表还要左结合)中的项,想从一张表中查询id不在这张表中的表项?这里的逻辑可以再考虑一下,其次就是楼上说的运算可以放在业务层进行。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
请教数据库多条件查询效率优化问题
  以前学的编程,好久不用现在忘的都差不多了。最近帮朋友写个小程序,对于多条件查询有些问题,听听大家的指点。谢谢!   环境:jdk1.7、sqlserver2000、tomcat6.0   查询条件:邮政编码、员工人数、机器设备数量、项目编号(不是主键id)、营业范围、公司名称。   我现在有两种方案,一是AND所有条件,然后在这个结果集中模糊查询“公司名称”,还有一个就是查询最严格的条件,然后分别把结果集作为查询范围,再在这个结果集的范围里查询次严格的条件,以此类推,最后再模糊查询“公司名称”。(就是:SELECT * FROM 表 WHERE name LIKE '%条件%' AND EXISTS (SELECT * FROM 表 WHERE 字段=条件 AND EXISTS(......)))   目前数据量在3万左右,以后还会增长。想请问大家,这两种查询语句,哪种效率更高一点?   我不太懂数据库的查询原理,但是个人感觉如果是AND的话,应该是找出一条记录来比对条件字段,就算是整表查的话,它最多也是查一次,但是会比较很多字段。   可是如果是子查询的话,遇到需要整表查的字段,也许至少要整表查询一次甚至更多。虽然每次可能只是比对一个字段,但是可能会整表检索很多次。   个人感觉是拼接条件比子查询效率要高一点,但是不确定,所以发贴听听大家的建议,谢谢。
sqlserver大数据优化,表分区疑问
sqlserver一个表中,存储GPS信息,数据已经有51亿条数据,查询效率通过聚集索引还是可以用,但是感觉已经顶不住了。 计划通过表分区进行优化,请教大家几个问题: 1.表分区需要停止sql服务吗 2.对数据库数据有什么影响 3.51亿数据应该分多少文件组 4.51亿数据是不是分区会很慢
hibernate的关联与单独Sql的效率问题
我想请教下各位前辈: 在用hibernate的一对多,多对一时,与单独写sql语句进行对表的操作,那种效率更高,当然我们假象sql是很优化的语句甚至是调用存储过程,那一种更好,为什么?拜赐教
JDBC对数据库进行读写的优化问题
最近在做一个项目优化的任务,项目用的是SSM,页面上对应的一个按钮,用户点击这个按钮就会 对不同的数据库的几张表进行读写,老大说这块相应速度比较慢,需要改一下,我看了下原来的方式是采用的JDBC创建连接String拼接SQL执行操作。 我目前的想法是将原来的Statement换成效率高的PreparedStatement,拼接SQL采用StringBuilder,想请问一下还有没有其他的优化的方法?
聚合函数查询效率慢的问题
展示一个统计页面,需要查询50条包含聚合函数的sql,非常慢,请问常用的优化思路。
数据库查询效率问题优化
这是一查询数据库表的SQL源码,请教擅长者帮忙优化一下in下的语句 select distinct (specreal.speciality_id) from om_datarole_spec_rela_t specreal, om_funcrole_relation_t funreal, OM_SYS_ROLE_T sysrole, OM_ROLE_PERSON_RELA_T sysreal, OM_DATAROLE_DISTRICT_RELA_T DISRELA WHERE specreal.data_role_sno = sysrole.data_role_sno and sysrole.fun_role_sno = funreal.fun_role_sno and funreal.f_id = 'B' AND SYSROLE.DATA_ROLE_SNO = DISRELA.DATA_ROLE_SNO and sysrole.sys_role_sno = sysreal.sys_role_sno and sysreal.f_employee_id = '00003502' and specreal.speciality_id [color=red]in[/color] (select tt.spec_id from SYS_SPECSTRUCT_T tt where specreal.speciality_id = tt.spec_id and tt.OPER_CODE in (SELECT distinct OPER_CODE FROM SYS_SPECSTRUCT_T WHERE SPEC_ID in (select specreal.speciality_id from om_datarole_spec_rela_t specreal, om_funcrole_relation_t funreal, OM_SYS_ROLE_T sysrole, OM_ROLE_PERSON_RELA_T sysreal WHERE specreal.data_role_sno = sysrole.data_role_sno and sysrole.fun_role_sno = funreal.fun_role_sno and funreal.f_id = 'BAD' and sysrole.sys_role_sno = sysreal.sys_role_sno and sysreal.f_employee_id = '0012'))) [b]问题补充:[/b] 这是在Oracle环境下的,业务逻辑可以对应字段!多谢。 [b]问题补充:[/b] 谢了,第一此执行速度于优化前速度,第二次执行却快于优化前第二次执行很多?我再看一下,下午确认一下,多谢了O(∩_∩)O哈哈~
PostgreSQL查询优化问题 ST_Intersects
我使用的环境是:Windows 10 64位,PostgreSQL 10,PostGIS 2.5 问题如下: 我有将近10W条路线信息,大致是这样存储的(真实情况路线信息会非常长) ``` INSERT INTO lots (lot) VALUES (ST_GeomFromText('LINESTRING(116.27397 39.90733, 116.27421 39.89683, 116.31023 39.89725, 116.31029 39.90738)')); ``` 表的结构: ``` CREATE TABLE lots ( lot_id serial primary key, lot geometry ); CREATE INDEX idx_lots_lot_id ON lots(lot_id); CREATE INDEX idx_lots_lot ON lots USING GIST(lot); ``` 我需要做的是,随机给出一块区域,然后判断经过这个区域的所有路线 我的查询是这么写的: ``` SELECT count(lot_id) from lots where ST_Intersects(lot, ST_GeomFromText('POLYGON((116.38566 39.93708, 116.38566 39.92826, 116.39358 39.92826, 116.39358 39.93708, 116.38566 39.93708))')) = 't'; ``` 这是一个多边形区域(当然值不固定)。然而我的执行效率非常低(单指查询效率),经过多次测试,耗时波动非常大,有的几毫米,几十毫秒,但是有的却要10几秒。 请问我有什么能够优化的地方吗? 先提前感谢帮助我解决问题的大神们。谢谢 **补充一点:查询的返回结果较少时速度非常快,稍微多一点返回结果几百以上查询时间就需要 好几秒了,甚至十几秒。**
多表关联查询效率就很低,有没有只改SQL的优化方案?
简化模型如下: [code="sql"] select * from t,ut,u where t.tid = ut.tid and ut.uid = u.uid [/code] 其中t表和ut表的数据量都在300W的样子,u表的数据量200条左右 查询时间在10秒左右 有没有什么好的优化方案?只从数据库这一层来做优化的 (历史原因:任SB设计人员非要搞了一个中间表ut,实际上在t表中多搞一个uid的字段就好了,然后可以废除ut表,但是修改模型的话代价太大了)
找大神帮忙优化phpcms分页效率
用phpcms建站,当内容达百万时分页效率会很低,有的分页执行时间长达数十秒,求熟悉phpcms的大神帮忙优化sql查询提升分页效率?
数据库查询优化问题求帮忙
查询结果集的时候还要查询本次有多少条数据 使用count的话就考虑sql太复杂,于是没办法使用size,效率又好低 有没遇到相似情况的帮忙提供个解决方案或者思路
MYSQL查询优化的问题 多条件 in查询
``` SELECT `userid` FROM `esys_sysusersets` WHERE ( `groupid` = '102' AND `userrole` < '3' ) OR ( `groupid` = '103' AND `userrole` < '3' ) ) ``` 返回的是一个数组 如果直接把语句放到另一个查询里 in的地方用语句 ``` SELECT `id`,`createat`,`createby`,`clientid`,`contactid`,`contactway`,`contactlog` FROM esys_dbcontactlogs esys WHERE ( ( `createby` = '100' or `createby` in (SELECT `userid` FROM `esys_sysusersets` WHERE ( `groupid` = '102' AND `userrole` < '3' ) OR ( `groupid` = '103' AND `userrole` < '3' ) ) ) ) AND ( `dstatus` = 1 ) ORDER BY `id` desc LIMIT 0,10 ``` [ RunTime:0.0112s ] ``` SELECT COUNT(id) AS tp_count FROM esys_dbcontactlogs esys WHERE ( ( `createby` = '100' or `createby` in (SELECT `userid` FROM `esys_sysusersets` WHERE ( `groupid` = '102' AND `userrole` < '3' ) OR ( `groupid` = '103' AND `userrole` < '3' ) ) ) ) AND ( `dstatus` = 1 ) LIMIT 1 ``` [ RunTime:24.0147s ] in的地方先把语句执行了 返回列表 再进行查询 ``` SELECT `id`,`createat`,`createby`,`clientid`,`contactid`,`contactway`,`contactlog` FROM esys_dbcontactlogs esys WHERE ( ( `createby` = '100' or `createby` in (659,708,720,725,728,744,757,795,803,833,835,837,847,849,851,856,858,883,884,885,886,887,888,927,932,937,945,947,953,958,963,964,965,966,967,968,1006,1013,1014,1016) ) ) AND ( `dstatus` = 1 ) ORDER BY `id` desc LIMIT 0,10 ``` [ RunTime:0.0007s ] ``` SELECT COUNT(id) AS tp_count FROM esys_dbcontactlogs esys WHERE ( ( `createby` = '100' or `createby` in (659,708,720,725,728,744,757,795,803,833,835,837,847,849,851,856,858,883,884,885,886,887,888,927,932,937,945,947,953,958,963,964,965,966,967,968,1006,1013,1014,1016) ) ) AND ( `dstatus` = 1 ) LIMIT 1 ``` [ RunTime:0.5297s ] 两者效率为什么差这么多呢 esys_dbcontactlogs的数据量在60W左右
SQL语句优化问题 执行速度太慢 ,如何优化
需要执行一段sql语句 但是效率 太低 能不能有办法 优化 子查询 太多了 SELECT ROWNUM RANKING, RES.* FROM (SELECT STEPMEDAL.USER_ID, SUM(STEPMEDAL.MEDALS) MEDALS, REALNAME, USER_IMG, START_DATE, END_DATE, NVL(TOTAL.TOTAL_STEP_NUM, 0) TOTAL_STEP_NUM FROM (SELECT INFO.USER_ID, REALNAME, START_DATE, END_DATE, USER_IMG, NVL(MEDALS, 0) MEDALS FROM (SELECT USERINFO.USER_ID, EXT.REALNAME, NVL(EXT.USER_IMG,0) USER_IMG, TO_CHAR(ACTI.START_DATE, 'YYYY-MM-DD') START_DATE, TO_CHAR(ACTI.END_DATE, 'YYYY-MM-DD') END_DATE FROM JC_USER_EXT EXT, JC_USER USERINFO, JC_USER USERDEPART, WALK_ACTIVITY_MAIN ACTI, WALK_ACTIVITY_COMPANY_REL REL, WALK_ACTIVITY_COMPANY_REL WACOM WHERE USERDEPART.USER_ID = 12519 AND REL.COMPANY_ID = USERDEPART.DEPART_ID AND WACOM.WA_ID = REL.WA_ID AND USERINFO.DEPART_ID = WACOM.COMPANY_ID AND EXT.USER_ID = USERINFO.USER_ID AND ACTI.STATE = 1 AND ACTI.STATUS = 1 AND EXT.JOB_TYPE = 1 AND ACTI.WA_ID = WACOM.WA_ID) INFO LEFT OUTER JOIN (SELECT USERINFO.USER_ID, CASE WHEN AVG(STEP.STEP_NUM) > 1800 THEN 1 ELSE 0 END MEDALS FROM JC_USER USERINFO LEFT OUTER JOIN WALK_USER_STEP STEP ON USERINFO.USER_ID = STEP.USER_ID, JC_USER USERDEPART, WALK_ACTIVITY_MAIN ACTI, WALK_ACTIVITY_COMPANY_REL REL, WALK_USER_STEP STEPDATE, WALK_ACTIVITY_COMPANY_REL WACOM WHERE USERDEPART.USER_ID = 12519 AND REL.COMPANY_ID = USERDEPART.DEPART_ID AND WACOM.WA_ID = REL.WA_ID AND USERINFO.DEPART_ID = WACOM.COMPANY_ID AND ACTI.STATE = 1 AND ACTI.STATUS = 1 AND ACTI.WA_ID = WACOM.WA_ID AND STEP.STEP_ID = STEPDATE.STEP_ID AND TO_CHAR(STEPDATE.STEP_DATE, 'YYYY/MM') <> TO_CHAR(SYSDATE, 'YYYY/MM') AND STEPDATE.STEP_DATE BETWEEN ACTI.START_DATE AND ACTI.END_DATE GROUP BY USERINFO.USER_ID, TO_CHAR(STEPDATE.STEP_DATE, 'YYYY/MM')) STEPRES ON INFO.USER_ID = STEPRES.USER_ID) STEPMEDAL LEFT OUTER JOIN (SELECT STEPDATE.USER_ID, SUM(STEPDATE.STEP_NUM) TOTAL_STEP_NUM FROM JC_USER USERINFO LEFT OUTER JOIN WALK_USER_STEP STEP ON USERINFO.USER_ID = STEP.USER_ID, JC_USER USERDEPART, WALK_ACTIVITY_MAIN ACTI, WALK_ACTIVITY_COMPANY_REL REL, WALK_USER_STEP STEPDATE, WALK_ACTIVITY_COMPANY_REL WACOM WHERE USERDEPART.USER_ID = 12519 AND REL.COMPANY_ID = USERDEPART.DEPART_ID AND ACTI.WA_ID = WACOM.WA_ID AND WACOM.WA_ID = REL.WA_ID AND USERINFO.DEPART_ID = WACOM.COMPANY_ID AND ACTI.STATE = 1 AND ACTI.STATUS = 1 AND STEP.STEP_ID = STEPDATE.STEP_ID AND STEPDATE.STEP_DATE BETWEEN ACTI.START_DATE AND ACTI.END_DATE GROUP BY STEPDATE.USER_ID) TOTAL ON STEPMEDAL.USER_ID = TOTAL.USER_ID GROUP BY STEPMEDAL.USER_ID, REALNAME, USER_IMG, START_DATE, END_DATE, TOTAL.TOTAL_STEP_NUM ORDER BY TOTAL_STEP_NUM DESC) RES
SQL 查询方式中 大批量数据查询字段效率
![图片只有三个,如果可能的话请尽量列举更多,或者扩展其他方面的查询性能和优化 方面的知识图片说明 问题内容: 电话号码表t_phonebook中有一千万条数据,其中号码字段phone上创建唯一索引, 且电话号码全都有数字组成,要求统计号码为321的电话号码数量, 下面算法执行速度最快的是——————,最慢的是—————— A:SELECT count(*) FROM t_phone WHERE phoneno>='321',AND phoneno< '321A' B:SELECT count(*) FROM t_phone WHERE phoneno LIKE '321%' C: SELECT count(*) FROM t_phone WHERE phoneno substr(phoneno,1,3)='321' D:都一样快**_
mysql left join效率优化
通过下面sql查询商品库存数量,因为库存表里面的库存是很多仓库的库存数据,在left join的时候又要做一个表连接,这样查询的时候效率非常低,如果left join一个表就很快,但是无法满足需求,请大神门帮忙优化下sql,谢谢 select g.*,gsd.number from goods g left join (select gs.goods_id,sum(gs.number) number from goods_stock gs,warehouses w where gs.warehouse_id=w.id group by gs.goods_id and w.id='123456789') gsw on(g.id=gsd.goods_id)
SQL语句的优化相关问题
1. select 列1, 列2, 列3, 列4, 列5, 列6, 列7, 列8, 列9,...... 2. "select" + "列1", + "列2", + "列3", + "列4", + "列5", + "列6", + "列7", + "列8"...... 在Java代码中这两种SQL语句的写法,如果列很多时在执行效率上会差多少啊?
数据汇总的子查询合并优化问题
![图片说明](https://img-ask.csdn.net/upload/201707/03/1499074550_838137.png) 这是原始表的数据,一共是4列,分别是日期,油田ID,产液量,产油量 我的需求是查询出每天每个油田的产液量、产油量、当月累计产液量、当月累计产油量、当年累计产液量、当年累计产油量 下边是我写的sql语句: select t.the__date,t.id__field,t.liquid,t.test__oil,__ --月累计 (select sum(t1.liquid) from TJ_FIELD_PROD_DAILY t1 where t1.id_field=t.id_field and t1.thedate<=t.thedate and t1.thedate>=(select trunc(t.thedate,'mm') from dual)), (select sum(t1.test_oil) from TJ_FIELD_PROD_DAILY t1 where t1.id_field=t.id_field and t1.thedate<=t.thedate and t1.thedate>=(select trunc(t.thedate,'mm') from dual)), --年累计 (select sum(t1.liquid) from TJ_FIELD_PROD_DAILY t1 where t1.id_field=t.id_field and t1.thedate<=t.thedate and t1.thedate>=(select trunc(t.thedate,'yyyy') from dual)), (select sum(t1.test_oil) from TJ_FIELD_PROD_DAILY t1 where t1.id_field=t.id_field and t1.thedate<=t.thedate and t1.thedate>=(select trunc(t.thedate,'yyyy') from dual)) from TJ_FIELD_PROD_DAILY t 这样一共写了4个子查询,查询效率很慢,我想问有没有办法可以把这4个子查询合并成2个,即一个子查询查两个字段,因为查询的条件都是一样的。求大神指点!
SQL中,添加一个条件后,执行效率瞬间下降,怎么优化
此SQL语句为查询数据库中,当前月,前一月,前两月数据,但是where中加了一个条件后,查找时间从2秒延长至50秒左右,请问造成这种状况的原因是什么?以及有什么优化方法? SELECT TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD,--月份 MIN (DATE_START) CUR_DATE_START, MAX (DATE_END) CUR_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS CUR_FEE_ACTUAL, replace(SUBSTRING ( CAST (DATEADD(m ,- 1, CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AS PRE_FISCAL_PERIOD, PRE.PRE_DATE_START, PRE.PRE_DATE_END, PRE.PRE_FEE_ACTUAL, replace(SUBSTRING ( CAST (dateadd(m ,- 2, CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AS BEF_FISCAL_PERIOD, BEF.BEF_DATE_START, BEF.BEF_DATE_END, BEF.BEF_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TR LEFT JOIN ( SELECT TP.RC_NO,TP.FEE_TYPE, TP.FISCAL_PERIOD, MIN (DATE_START) PRE_DATE_START, MAX (DATE_END) PRE_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS PRE_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TP WHERE IS_DELETE = '0' AND IS_AUTO_PAY = 'D00002' AND ISNULL(IS_FIRST_PAY, '') != 'D00002' AND PR_STATUS != 'L04301' GROUP BY TP.RC_NO, TP.FEE_TYPE, TP.FISCAL_PERIOD ) PRE ON PRE.RC_NO = TR.RC_NO AND PRE.FEE_TYPE=TR.FEE_TYPE LEFT JOIN ( SELECT TA.RC_NO,TA.FEE_TYPE, TA.FISCAL_PERIOD, MIN (DATE_START) BEF_DATE_START, MAX (DATE_END) BEF_DATE_END, CONVERT(VARCHAR(30),CAST(SUM(ISNULL(FEE_ACTUAL,0))/ 10000 AS decimal(18,2)),1) AS BEF_FEE_ACTUAL FROM T_AP_PAYMENT_REQUEST TA WHERE IS_DELETE = '0' AND IS_AUTO_PAY = 'D00002' AND ISNULL(IS_FIRST_PAY, '') != 'D00002' AND PR_STATUS != 'L04301' GROUP BY TA.RC_NO, TA.FEE_TYPE, TA.FISCAL_PERIOD ) BEF ON BEF.RC_NO = TR.RC_NO AND BEF.FEE_TYPE=TR.FEE_TYPE WHERE TR.FISCAL_PERIOD='201701' --此语句为添加的条件 AND PRE.FISCAL_PERIOD = replace(SUBSTRING (CAST (dateadd(m ,- 1,CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AND BEF.FISCAL_PERIOD = replace(SUBSTRING (CAST (dateadd(m ,- 2,CAST (TR.FISCAL_PERIOD + '01' AS DATE)) AS VARCHAR),1,7),'-','') AND TR.IS_DELETE = '0' AND TR.IS_AUTO_PAY = 'D00002' AND ISNULL(TR.IS_FIRST_PAY, '') != 'D00002' AND TR.PR_STATUS != 'L04301' GROUP BY TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD, PRE.PRE_DATE_START, PRE.PRE_DATE_END, PRE.PRE_FEE_ACTUAL, BEF.BEF_DATE_START, BEF.BEF_DATE_END, BEF.BEF_FEE_ACTUAL ORDER BY TR.RC_NO, TR.FEE_TYPE, TR.FISCAL_PERIOD 代码需要注释的,直接问就可以了
mysql- sql查询 效率正常吗
以下是sql: ``` SELECT u.id,u.orgcode,u.name,u.slaveuser,COUNT(*) FROM wx_xx_user u INNER JOIN wx_xx_wlzy w ON u.id=w.publisherid INNER JOIN wx_xx_wlzycomment wc ON w.id = wc.wlzyid INNER JOIN wx_xx_org org ON u.orgcode=org.orgcode WHERE w.state = 2 AND w.wlzytype = 5 AND wc.state =0 AND u.issuperadmin!=1 AND u.slaveuser IS NOT NULL AND u.slaveuser!='' AND org.autologin=1 GROUP BY u.id ``` explain结果: ![图片说明](https://img-ask.csdn.net/upload/201512/07/1449468722_430063.png) 数据量:wx_xx_wlzy 62W,wx_xx_wlzycomment 13W,wx_xx_user 38W 查询时间:2.9S, 还能再优化吗
帮忙SQLSERVER通过存储写ORACLE语句优化
这个 问题放错大类了 不会移动 现在有这个需求 从sqlserver里查出数据进行简单的出来后 插入oracle表中 我写好的个存储但是运行的时候感觉效率特别慢 谁能帮我把下面的 语句优化下 存储在sqlserver这边 if Exists(select name from sysobjects where name='ZHIJIAN_BANZHENG_INIT' and type='P') drop procedure ZHIJIAN_BANZHENG_INIT go create PROCEDURE ZHIJIAN_BANZHENG_INIT as DECLARE @zch varchar(30), --长度根据实际长度修改 @jgdm varchar(30), @jgmc varchar(250), @jglx varchar(30), @bzrq datetime, @body varchar(500), @date varchar(10), @uid varchar(30) set @date =convert(char(10),getdate(),120) --获得当前日期 declare cursor2 cursor for --定义游标cursor1 select zch,jgdm,jgmc,jglx,bzrq from jgdm where jglx='1' --使用游标的对象(跟据需要填入select语句) open cursor2 -- fetch cursor2 --into @name,@party_id --打开游标 WHILE 1=1 --判断是否成功获取数据 begin fetch next from cursor2 into @zch,@jgdm,@jgmc,@jglx,@bzrq --将游标向下移1行 if(@@FETCH_STATUS =-1) break SET @uid=CAST(CAST(NEWID() as nvarchar(36)) + CAST(GETDATE() as varchar(3)) as varchar(30)) set @body='{"QYZCH":'+@zch+ --封装为JSON格式 '","ZZJGDM":"'+@jgdm+ '","JGMC":'+@jgmc+ '","JGZCLX":"'+@jglx+ '","BZRQ":"'+CONVERT (varchar(8),@bzrq,112) +'"}' --print(@body) insert into [127.0.0.1]..[JXWFRONT].[DATA_TEMP_REPORT] values(@uid,'zhijian_banzheng',@body,'1',@date) --插入oracle数据库 如何优化 end close cursor2 --关闭游标 deallocate cursor2
爬虫福利二 之 妹子图网MM批量下载
爬虫福利一:27报网MM批量下载    点击 看了本文,相信大家对爬虫一定会产生强烈的兴趣,激励自己去学习爬虫,在这里提前祝:大家学有所成! 目标网站:妹子图网 环境:Python3.x 相关第三方模块:requests、beautifulsoup4 Re:各位在测试时只需要将代码里的变量 path 指定为你当前系统要保存的路径,使用 python xxx.py 或IDE运行即可。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
JDK12 Collectors.teeing 你真的需要了解一下
前言在 Java 12 里面有个非常好用但在官方 JEP 没有公布的功能,因为它只是 Collector 中的一个小改动,它的作用是 merge 两个 collector 的结果,这句话
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
【图解经典算法题】如何用一行代码解决约瑟夫环问题
约瑟夫环问题算是很经典的题了,估计大家都听说过,然后我就在一次笔试中遇到了,下面我就用 3 种方法来详细讲解一下这道题,最后一种方法学了之后保证让你可以让你装逼。 问题描述:编号为 1-N 的 N 个士兵围坐在一起形成一个圆圈,从编号为 1 的士兵开始依次报数(1,2,3…这样依次报),数到 m 的 士兵会被杀死出列,之后的士兵再从 1 开始报数。直到最后剩下一士兵,求这个士兵的编号。 1、方
致 Python 初学者
文章目录1. 前言2. 明确学习目标,不急于求成,不好高骛远3. 在开始学习 Python 之前,你需要做一些准备2.1 Python 的各种发行版2.2 安装 Python2.3 选择一款趁手的开发工具3. 习惯使用IDLE,这是学习python最好的方式4. 严格遵从编码规范5. 代码的运行、调试5. 模块管理5.1 同时安装了py2/py35.2 使用Anaconda,或者通过IDE来安装模
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
GitHub标星近1万:只需5秒音源,这个网络就能实时“克隆”你的声音
作者 | Google团队译者 | 凯隐编辑 | Jane出品 | AI科技大本营(ID:rgznai100)本文中,Google 团队提出了一种文本语音合成(text to speech)神经系统,能通过少量样本学习到多个不同说话者(speaker)的语音特征,并合成他们的讲话音频。此外,对于训练时网络没有接触过的说话者,也能在不重新训练的情况下,仅通过未知说话者数秒的音频来合成其讲话音频,即网
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
【管理系统课程设计】美少女手把手教你后台管理
【后台管理系统】URL设计与建模分析+项目源码+运行界面 栏目管理、文章列表、用户管理、角色管理、权限管理模块(文章最后附有源码) 一、这是一个什么系统? 1.1 学习后台管理系统的原因 随着时代的变迁,现如今各大云服务平台横空出世,市面上有许多如学生信息系统、图书阅读系统、停车场管理系统等的管理系统,而本人家里就有人在用烟草销售系统,直接在网上完成挑选、购买与提交收货点,方便又快捷。 试想,
4G EPS 第四代移动通信系统
目录 文章目录目录4G EPSEPS 的架构EPS 的参考模型E-UTRANUEeNodeBEPCMME(移动性控制处理单元)S-GW(E-RAB 无线访问承载接入点)P-GW(PDN 接入点)HSS(用户认证中心)PCRF(计费规则与策略)SPR(用户档案)OCS(在线计费)OFCS(离线计费)接口类型Uu 接口(空中接口,UE 和 AN 之间)S1 接口(AN 和 CN 之间)S1-U 接口和
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问