报表程序中一段SQL语句。
##优化前

返回:3952
耗时:224s
SQL 代码:

select to_date(nvl(pro.value, '1900-01-01 00:00:00'),'YYYY-MM-DD HH24:MI:SS') as LAST_UPDATE_TIME,p.productcode as COM_COVERAGE_CODE,p.policyno as POLICY_NO,p.productcode as POLICY_TYPE,nvl(pro3.value, '$$500002000004') as SALES_CHANNEL,p.inceptiondate as EFFECTIVE_DATE,p.terminationdate as EXPIRE_DATE,1 as INSURED_NO,null as BANK_CODE,to_date(pro1.value, 'YYYY-MM-DD HH24:MI:SS') as APPLICATION_DATE,p.issuedate as ACCEPT_DATE,'05' as SALES_TYPE,p.handler as SALES_CODE,pro2.staffname as SALES_NAME,p.agencyid as SALES_CHANNEL_CODE,pro4.value as SALES_CHANNEL_NAME,pro5.value as BUSINESS_ADDRESS,decode(p.renewalpolicyno, null, '01', '02') as CONTRACT_SOURCE,p.applicationno as CONTRACT_NO,null as RENEWAL_METHOD,p.policystatus as POLICY_STATUS,'0' as REJECTION,p.suminsured as SUM_INSURED,p.suminsured as EFFECTIVE_SUMINSURED,p.premium as PREMIUM,p.premium as CURRENT_PREMIUM,null as YEAR_PREMIUM,casewhen r4.paymentno > 1 then'09'else'01'end as PAYMENT_METHOD,null as PAYMENT_YEARS,decode(r4.paymentno, 0, 1, r4.paymentno) as PAYMENT_NO,p.productcode as POLICY_HOLDER_PRO,1 as POLICY_HOLDER_NUM,1 as EFFECTIVE_INSURED_NUM,p.renewalpolicyno as FORMER_POLICY_NO,pro6.specialremark as SPECIALRE_MARK,null as REGULAR_CLEARING_MARK,null as REGULAR_CLEARING,null as REGULAR_CLEARING_DATE,null as PREMIUMDUE_DATE,'0' as REALTIME_CLAIM_FLAG,'0' as POLICY_LOAN,'0' as AUTO_PAIDUP,p.coinsuranceflag as CO_INSURANCE,p.coinsurancerole as LEAD_CO_INSURANCE,null as CASH_VALUE,null as POLICY_REGISTER_ADDR,null as DEBIT_BANK,null as DEBIT_ACCOUNT,null as DEBIT_NAMEfrom policy pleft join role ron p.topactualid = r.topactualidand r.kind = 'DATEINFO'left join property proon r.topactualid = pro.topactualidand r.actualid = pro.parentactualidand r.parentagreementid = pro.parentagreementidand r.topagreementid = pro.topagreementidand pro.kind = 'UNDERWRITINGDATE'left join property pro1on pro1.topactualid = p.topactualidand pro1.kind = 'APPLICATIONDATE'left join (select x.policyno as policyno,x.topactualid as topactualid,x.parentactualid as parentactualid,max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffnamefrom (select p.policyno         as policyno,pro.topactualid    as topactualid,pro.parentactualid as parentactualid,pro.kind           as kind,pro.name           as name,pro.value          as valuefrom policy pleft join role ron r.topactualid = p.topactualidand r.kind = 'HANDLER'left join property proon pro.topactualid = r.topactualidand pro.parentactualid = r.actualidand pro.kind in ('SERIALNO', 'STAFFNAME')where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')and (p.uniquecode like '013100%' orp.uniquecode like '011000%')) xgroup by policyno, topactualid, parentactualid) pro2on pro2.policyno = p.policynoand pro2.topactualid = p.topactualidand pro2.serialno = '1'left join role r3on p.topactualid = r3.topactualidand r3.kind = 'INTERMEDIARYINFO'left join property pro3on r3.topactualid = pro3.topactualidand r3.actualid = pro3.parentactualidand r3.parentagreementid = pro3.parentagreementidand r3.topagreementid = pro3.topagreementidand pro3.kind = 'INTERMEDIARYTYPE'left join property pro4on r3.topactualid = pro4.topactualidand r3.actualid = pro4.parentactualidand r3.parentagreementid = pro4.parentagreementidand r3.topagreementid = pro4.topagreementidand pro4.kind = 'INTERMEDIARYNAME'left join property pro5on r3.topactualid = pro5.topactualidand r3.actualid = pro5.parentactualidand r3.parentagreementid = pro5.parentagreementidand r3.topagreementid = pro5.topagreementidand pro5.kind = 'OFFICEADDRESS'left join (select pro.policyno,pro.topactualid,replace(wm_concat(pro.text), ', ', '?') as specialremarkfrom (select p.policyno, p.topactualid, pro2.value as textfrom policy pinner join role ron r.topactualid = p.topactualidand r.kind = 'SPECIALAGREEMENTITEM'left join property pro1on r.topactualid = pro1.topactualidand r.actualid = pro1.parentactualidand r.parentagreementid = pro1.parentagreementidand r.topagreementid = pro1.topagreementidand pro1.kind = 'SERIALNO'left join property pro2on r.topactualid = pro2.topactualidand r.actualid = pro2.parentactualidand r.parentagreementid = pro2.parentagreementidand r.topagreementid = pro2.topagreementidand pro2.kind = 'SPECIALAGREEMENTTEXT'where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' orp.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')order by pro1.value) progroup by pro.policyno, pro.topactualid) pro6on p.policyno = pro6.policynoand p.topactualid = pro6.topactualidleft join (select p.policyno, p.topactualid, count(*) as paymentnofrom policy pleft join role ron r.topactualid = p.topactualidand r.kind = 'PAYMENTSCHEDULEONAPPLICATION'where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' orp.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')group by p.policyno, p.topactualid) r4on p.policyno = r4.policynoand p.topactualid = r4.topactualidwhere p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')AND p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' or p.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')order by ACCEPT_DATE, POLICY_NOPlan hash value: 3635118867----------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                     | Name               | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                              |                    | 29315 |   127M|       |   367K  (1)| 01:13:34 |
|   1 |  SORT ORDER BY                                |                    | 29315 |   127M|   458M|   367K  (1)| 01:13:34 |
|   2 |   NESTED LOOPS OUTER                          |                    | 29315 |   127M|       |   340K  (1)| 01:08:01 |
|   3 |    NESTED LOOPS OUTER                         |                    | 29315 |   125M|       |   232K  (1)| 00:46:31 |
|   4 |     NESTED LOOPS OUTER                        |                    |  4447 |    18M|       |   216K  (1)| 00:43:24 |
|   5 |      NESTED LOOPS OUTER                       |                    |  2534 |    10M|       |   206K  (1)| 00:41:24 |
|   6 |       NESTED LOOPS OUTER                      |                    |  2534 |    10M|       |   197K  (1)| 00:39:33 |
|   7 |        NESTED LOOPS OUTER                     |                    |  2534 |    10M|       |   188K  (1)| 00:37:41 |
|*  8 |         HASH JOIN OUTER                       |                    |  2534 |    10M|  5592K|   179K  (1)| 00:35:50 |
|   9 |          NESTED LOOPS OUTER                   |                    |  2534 |  5557K|       | 72919   (1)| 00:14:36 |
|* 10 |           HASH JOIN RIGHT OUTER               |                    |  1461 |  3140K|       | 68293   (1)| 00:13:40 |
|  11 |            VIEW                               |                    | 11415 |   367K|       |  6364   (1)| 00:01:17 |
|  12 |             HASH GROUP BY                     |                    | 11415 |  1036K|  2360K|  6364   (1)| 00:01:17 |
|* 13 |              HASH JOIN OUTER                  |                    | 11415 |  1036K|       |  6115   (1)| 00:01:14 |
|* 14 |               TABLE ACCESS FULL               | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
|* 15 |               INDEX RANGE SCAN                | IDX_ROLE_TEST2     |   380K|  8907K|       |  1851   (1)| 00:00:23 |
|* 16 |            HASH JOIN OUTER                    |                    |  1461 |  3093K|       | 61929   (1)| 00:12:24 |
|* 17 |             TABLE ACCESS FULL                 | POLICY             |  1461 |   208K|       |  4261   (1)| 00:00:52 |
|  18 |             VIEW                              |                    |  6221 |    11M|       | 57668   (1)| 00:11:33 |
|  19 |              SORT GROUP BY                    |                    |  6221 |    11M|    24M| 57668   (1)| 00:11:33 |
|  20 |               VIEW                            |                    |  6221 |    11M|       | 55036   (1)| 00:11:01 |
|  21 |                SORT ORDER BY                  |                    |  6221 |  1312K|  2856K| 55036   (1)| 00:11:01 |
|  22 |                 NESTED LOOPS OUTER            |                    |  6221 |  1312K|       | 54741   (1)| 00:10:57 |
|  23 |                  NESTED LOOPS OUTER           |                    |  6221 |  1002K|       | 31933   (1)| 00:06:24 |
|  24 |                   NESTED LOOPS                |                    |  6221 |   692K|       |  9125   (1)| 00:01:50 |
|* 25 |                    TABLE ACCESS FULL          | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
|  26 |                    TABLE ACCESS BY INDEX ROWID| ROLE               |     4 |   180 |       |     5   (0)| 00:00:01 |
|* 27 |                     INDEX RANGE SCAN          | IDX_ROLE_TEST2     |     4 |       |       |     3   (0)| 00:00:01 |
|* 28 |                   TABLE ACCESS BY INDEX ROWID | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 29 |                    INDEX RANGE SCAN           | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|* 30 |                  TABLE ACCESS BY INDEX ROWID  | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 31 |                   INDEX RANGE SCAN            | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|  32 |           TABLE ACCESS BY INDEX ROWID         | ROLE               |     2 |    90 |       |     4   (0)| 00:00:01 |
|* 33 |            INDEX RANGE SCAN                   | IDX_ROLE_TEST2     |     1 |       |       |     3   (0)| 00:00:01 |
|  34 |          VIEW                                 |                    | 73354 |   141M|       | 98838   (2)| 00:19:47 |
|* 35 |           FILTER                              |                    |       |       |       |            |          |
|  36 |            HASH GROUP BY                      |                    | 73354 |  9813K|  1092M| 98838   (2)| 00:19:47 |
|  37 |             NESTED LOOPS OUTER                |                    |  7335K|   958M|       | 18161   (1)| 00:03:38 |
|  38 |              NESTED LOOPS OUTER               |                    |  9913 |   968K|       |  9364   (1)| 00:01:53 |
|* 39 |               TABLE ACCESS FULL               | POLICY             |  1461 |    98K|       |  4261   (1)| 00:00:52 |
|  40 |               TABLE ACCESS BY INDEX ROWID     | ROLE               |     7 |   217 |       |     6   (0)| 00:00:01 |
|* 41 |                INDEX RANGE SCAN               | IDX_ROLE_TEST2     |     7 |       |       |     3   (0)| 00:00:01 |
|  42 |              VIEW                             |                    |   740 | 27380 |       |     1   (0)| 00:00:01 |
|  43 |               INLIST ITERATOR                 |                    |       |       |       |            |          |
|  44 |                TABLE ACCESS BY INDEX ROWID    | PROPERTY           |     1 |    37 |       |     6   (0)| 00:00:01 |
|* 45 |                 INDEX RANGE SCAN              | IDX_PROPERTY_TEST2 |     1 |       |       |     5   (0)| 00:00:01 |
|* 46 |         TABLE ACCESS BY INDEX ROWID           | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 47 |          INDEX RANGE SCAN                     | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|* 48 |        TABLE ACCESS BY INDEX ROWID            | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 49 |         INDEX RANGE SCAN                      | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|* 50 |       TABLE ACCESS BY INDEX ROWID             | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 51 |        INDEX RANGE SCAN                       | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|  52 |      TABLE ACCESS BY INDEX ROWID              | PROPERTY           |     2 |    60 |       |     5   (0)| 00:00:01 |
|* 53 |       INDEX RANGE SCAN                        | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
|  54 |     TABLE ACCESS BY INDEX ROWID               | ROLE               |     7 |   315 |       |     6   (0)| 00:00:01 |
|* 55 |      INDEX RANGE SCAN                         | IDX_ROLE_TEST2     |     7 |       |       |     3   (0)| 00:00:01 |
|* 56 |    TABLE ACCESS BY INDEX ROWID                | PROPERTY           |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 57 |     INDEX RANGE SCAN                          | IDX_PROPERTY_TEST2 |     1 |       |       |     3   (0)| 00:00:01 |
----------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------8 - access("PRO2"."TOPACTUALID"(+)="P"."TOPACTUALID" AND "PRO2"."POLICYNO"(+)="P"."POLICYNO")10 - access("P"."TOPACTUALID"="R4"."TOPACTUALID"(+) AND "P"."POLICYNO"="R4"."POLICYNO"(+))13 - access("R"."TOPACTUALID"(+)="P"."TOPACTUALID")14 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')15 - access("R"."KIND"(+)='PAYMENTSCHEDULEONAPPLICATION')16 - access("P"."TOPACTUALID"="PRO6"."TOPACTUALID"(+) AND "P"."POLICYNO"="PRO6"."POLICYNO"(+))17 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')25 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')27 - access("R"."KIND"='SPECIALAGREEMENTITEM' AND "R"."TOPACTUALID"="P"."TOPACTUALID")28 - filter("R"."TOPAGREEMENTID"="PRO2"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO2"."PARENTAGREEMENTID"(+))29 - access("PRO2"."KIND"(+)='SPECIALAGREEMENTTEXT' AND "R"."TOPACTUALID"="PRO2"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO2"."PARENTACTUALID"(+))30 - filter("R"."TOPAGREEMENTID"="PRO1"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO1"."PARENTAGREEMENTID"(+))31 - access("PRO1"."KIND"(+)='SERIALNO' AND "R"."TOPACTUALID"="PRO1"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO1"."PARENTACTUALID"(+))33 - access("R3"."KIND"(+)='INTERMEDIARYINFO' AND "P"."TOPACTUALID"="R3"."TOPACTUALID"(+))35 - filter(MAX(DECODE("PRO"."KIND",'SERIALNO',"PRO"."VALUE",''))='1')39 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')41 - access("R"."KIND"(+)='HANDLER' AND "R"."TOPACTUALID"(+)="P"."TOPACTUALID")45 - access(("PRO"."KIND"='SERIALNO' OR "PRO"."KIND"='STAFFNAME') AND "PRO"."TOPACTUALID"="R"."TOPACTUALID" AND "PRO"."PARENTACTUALID"="R"."ACTUALID")46 - filter("R3"."TOPAGREEMENTID"="PRO3"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO3"."PARENTAGREEMENTID"(+))47 - access("PRO3"."KIND"(+)='INTERMEDIARYTYPE' AND "R3"."TOPACTUALID"="PRO3"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO3"."PARENTACTUALID"(+))48 - filter("R3"."TOPAGREEMENTID"="PRO4"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO4"."PARENTAGREEMENTID"(+))49 - access("PRO4"."KIND"(+)='INTERMEDIARYNAME' AND "R3"."TOPACTUALID"="PRO4"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO4"."PARENTACTUALID"(+))50 - filter("R3"."TOPAGREEMENTID"="PRO5"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO5"."PARENTAGREEMENTID"(+))51 - access("PRO5"."KIND"(+)='OFFICEADDRESS' AND "R3"."TOPACTUALID"="PRO5"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO5"."PARENTACTUALID"(+))53 - access("PRO1"."KIND"(+)='APPLICATIONDATE' AND "PRO1"."TOPACTUALID"(+)="P"."TOPACTUALID")55 - access("R"."KIND"(+)='DATEINFO' AND "P"."TOPACTUALID"="R"."TOPACTUALID"(+))56 - filter("R"."TOPAGREEMENTID"="PRO"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO"."PARENTAGREEMENTID"(+))57 - access("PRO"."KIND"(+)='UNDERWRITINGDATE' AND "R"."TOPACTUALID"="PRO"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO"."PARENTACTUALID"(+))

##分析
分析SQL代码,可以看出访问多次policy表,谓词条件也一样

  left join (select x.policyno as policyno,x.topactualid as topactualid,x.parentactualid as parentactualid,max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffnamefrom (select p.policyno         as policyno,pro.topactualid    as topactualid,pro.parentactualid as parentactualid,pro.kind           as kind,pro.name           as name,pro.value          as valuefrom policy pleft join role ron r.topactualid = p.topactualidand r.kind = 'HANDLER'left join property proon pro.topactualid = r.topactualidand pro.parentactualid = r.actualidand pro.kind in ('SERIALNO', 'STAFFNAME')where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')and (p.uniquecode like '013100%' orp.uniquecode like '011000%')) xgroup by policyno, topactualid, parentactualid) pro2
-----------------------------------------------------------------------left join (select pro.policyno,pro.topactualid,replace(wm_concat(pro.text), ', ', '?') as specialremarkfrom (select p.policyno, p.topactualid, pro2.value as textfrom policy pinner join role ron r.topactualid = p.topactualidand r.kind = 'SPECIALAGREEMENTITEM'left join property pro1on r.topactualid = pro1.topactualidand r.actualid = pro1.parentactualidand r.parentagreementid = pro1.parentagreementidand r.topagreementid = pro1.topagreementidand pro1.kind = 'SERIALNO'left join property pro2on r.topactualid = pro2.topactualidand r.actualid = pro2.parentactualidand r.parentagreementid = pro2.parentagreementidand r.topagreementid = pro2.topagreementidand pro2.kind = 'SPECIALAGREEMENTTEXT'where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' orp.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')order by pro1.value) progroup by pro.policyno, pro.topactualid) pro6-------------------------------------------------------------------left join (select p.policyno, p.topactualid, count(*) as paymentnofrom policy pleft join role ron r.topactualid = p.topactualidand r.kind = 'PAYMENTSCHEDULEONAPPLICATION'where p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' orp.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')group by p.policyno, p.topactualid) r4

##优化

耗时:10s
返回:3952

利用with as 先把访问policy表数据提取并缓存成临时表,然后再进行关联查询。

with p as     (select policyno,topactualid from policy    where productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')and policystatus = '$$900001106001'and endorsementid is nulland (uniquecode like '013100%' oruniquecode like '011000%')and ISSUEDATE > to_date('20160411', 'YYYYMMDD'))
select to_date(nvl(pro.value, '1900-01-01 00:00:00'),'YYYY-MM-DD HH24:MI:SS') as LAST_UPDATE_TIME,p.productcode as COM_COVERAGE_CODE,p.policyno as POLICY_NO,p.productcode as POLICY_TYPE,nvl(pro3.value, '$$500002000004') as SALES_CHANNEL,p.inceptiondate as EFFECTIVE_DATE,p.terminationdate as EXPIRE_DATE,1 as INSURED_NO,null as BANK_CODE,to_date(pro1.value, 'YYYY-MM-DD HH24:MI:SS') as APPLICATION_DATE,p.issuedate as ACCEPT_DATE,'05' as SALES_TYPE,p.handler as SALES_CODE,pro2.staffname as SALES_NAME,p.agencyid as SALES_CHANNEL_CODE,pro4.value as SALES_CHANNEL_NAME,pro5.value as BUSINESS_ADDRESS,decode(p.renewalpolicyno, null, '01', '02') as CONTRACT_SOURCE,p.applicationno as CONTRACT_NO,null as RENEWAL_METHOD,p.policystatus as POLICY_STATUS,'0' as REJECTION,p.suminsured as SUM_INSURED,p.suminsured as EFFECTIVE_SUMINSURED,p.premium as PREMIUM,p.premium as CURRENT_PREMIUM,null as YEAR_PREMIUM,casewhen r4.paymentno > 1 then'09'else'01'end as PAYMENT_METHOD,null as PAYMENT_YEARS,decode(r4.paymentno, 0, 1, r4.paymentno) as PAYMENT_NO,p.productcode as POLICY_HOLDER_PRO,1 as POLICY_HOLDER_NUM,1 as EFFECTIVE_INSURED_NUM,p.renewalpolicyno as FORMER_POLICY_NO,pro6.specialremark as SPECIALRE_MARK,null as REGULAR_CLEARING_MARK,null as REGULAR_CLEARING,null as REGULAR_CLEARING_DATE,null as PREMIUMDUE_DATE,'0' as REALTIME_CLAIM_FLAG,'0' as POLICY_LOAN,'0' as AUTO_PAIDUP,p.coinsuranceflag as CO_INSURANCE,p.coinsurancerole as LEAD_CO_INSURANCE,null as CASH_VALUE,null as POLICY_REGISTER_ADDR,null as DEBIT_BANK,null as DEBIT_ACCOUNT,null as DEBIT_NAMEfrom policy pleft join role ron p.topactualid = r.topactualidand r.kind = 'DATEINFO'left join property proon r.topactualid = pro.topactualidand r.actualid = pro.parentactualidand r.parentagreementid = pro.parentagreementidand r.topagreementid = pro.topagreementidand pro.kind = 'UNDERWRITINGDATE'left join property pro1on pro1.topactualid = p.topactualidand pro1.kind = 'APPLICATIONDATE'left join (select x.policyno as policyno,x.topactualid as topactualid,x.parentactualid as parentactualid,max(decode(x.kind, 'SERIALNO', x.value, '')) as serialno,max(decode(x.kind, 'STAFFNAME', x.value, '')) as staffnamefrom (select p.policyno         as policyno,pro.topactualid    as topactualid,pro.parentactualid as parentactualid,pro.kind           as kind,pro.name           as name,pro.value          as valuefrom  pleft join role ron r.topactualid = p.topactualidand r.kind = 'HANDLER'left join property proon pro.topactualid = r.topactualidand pro.parentactualid = r.actualidand pro.kind in ('SERIALNO', 'STAFFNAME')) xgroup by policyno, topactualid, parentactualid) pro2on pro2.policyno = p.policynoand pro2.topactualid = p.topactualidand pro2.serialno = '1'left join role r3on p.topactualid = r3.topactualidand r3.kind = 'INTERMEDIARYINFO'left join property pro3on r3.topactualid = pro3.topactualidand r3.actualid = pro3.parentactualidand r3.parentagreementid = pro3.parentagreementidand r3.topagreementid = pro3.topagreementidand pro3.kind = 'INTERMEDIARYTYPE'left join property pro4on r3.topactualid = pro4.topactualidand r3.actualid = pro4.parentactualidand r3.parentagreementid = pro4.parentagreementidand r3.topagreementid = pro4.topagreementidand pro4.kind = 'INTERMEDIARYNAME'left join property pro5on r3.topactualid = pro5.topactualidand r3.actualid = pro5.parentactualidand r3.parentagreementid = pro5.parentagreementidand r3.topagreementid = pro5.topagreementidand pro5.kind = 'OFFICEADDRESS'left join (select pro.policyno,pro.topactualid,replace(wm_concat(pro.text), ', ', '?') as specialremarkfrom (select p.policyno, p.topactualid, pro2.value as textfrom  pinner join role ron r.topactualid = p.topactualidand r.kind = 'SPECIALAGREEMENTITEM'left join property pro1on r.topactualid = pro1.topactualidand r.actualid = pro1.parentactualidand r.parentagreementid = pro1.parentagreementidand r.topagreementid = pro1.topagreementidand pro1.kind = 'SERIALNO'left join property pro2on r.topactualid = pro2.topactualidand r.actualid = pro2.parentactualidand r.parentagreementid = pro2.parentagreementidand r.topagreementid = pro2.topagreementidand pro2.kind = 'SPECIALAGREEMENTTEXT'order by pro1.value) progroup by pro.policyno, pro.topactualid) pro6on p.policyno = pro6.policynoand p.topactualid = pro6.topactualidleft join (select p.policyno, p.topactualid, count(*) as paymentnofrom  pleft join role ron r.topactualid = p.topactualidand r.kind = 'PAYMENTSCHEDULEONAPPLICATION'group by p.policyno, p.topactualid) r4on p.policyno = r4.policynoand p.topactualid = r4.topactualidwhere p.productcode in ('00070001','00070002','00070003','00070004','00070005','00070006','00130001')AND p.policystatus = '$$900001106001'and p.endorsementid is nulland (p.uniquecode like '013100%' or p.uniquecode like '011000%')and p.ISSUEDATE > to_date('20160411', 'YYYYMMDD')order by ACCEPT_DATE, POLICY_NO;Plan hash value: 3669690643--------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                      | Name                        | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                               |                             | 29315 |   127M|       |   332K  (1)| 01:06:29 |
|   1 |  TEMP TABLE TRANSFORMATION                     |                             |       |       |       |            |          |
|   2 |   LOAD AS SELECT                               |                             |       |       |       |            |          |
|*  3 |    TABLE ACCESS FULL                           | POLICY                      |  1461 |    98K|       |  4261   (1)| 00:00:52 |
|   4 |   SORT ORDER BY                                |                             | 29315 |   127M|   458M|   328K  (1)| 01:05:37 |
|   5 |    NESTED LOOPS OUTER                          |                             | 29315 |   127M|       |   300K  (1)| 01:00:04 |
|   6 |     NESTED LOOPS OUTER                         |                             | 29315 |   125M|       |   192K  (1)| 00:38:34 |
|   7 |      NESTED LOOPS OUTER                        |                             |  4447 |    18M|       |   177K  (1)| 00:35:28 |
|   8 |       NESTED LOOPS OUTER                       |                             |  2534 |    10M|       |   167K  (1)| 00:33:28 |
|   9 |        NESTED LOOPS OUTER                      |                             |  2534 |    10M|       |   157K  (1)| 00:31:36 |
|  10 |         NESTED LOOPS OUTER                     |                             |  2534 |    10M|       |   148K  (1)| 00:29:45 |
|* 11 |          HASH JOIN OUTER                       |                             |  2534 |    10M|  5592K|   139K  (1)| 00:27:53 |
|  12 |           NESTED LOOPS OUTER                   |                             |  2534 |  5557K|       | 64290   (1)| 00:12:52 |
|* 13 |            HASH JOIN RIGHT OUTER               |                             |  1461 |  3140K|       | 59665   (1)| 00:11:56 |
|  14 |             VIEW                               |                             | 11414 |   367K|       |  1991   (1)| 00:00:24 |
|  15 |              HASH GROUP BY                     |                             | 11414 |   490K|  1176K|  1991   (1)| 00:00:24 |
|* 16 |               HASH JOIN OUTER                  |                             | 11414 |   490K|       |  1860   (1)| 00:00:23 |
|  17 |                VIEW                            |                             |  1461 | 29220 |       |     5   (0)| 00:00:01 |
|  18 |                 TABLE ACCESS FULL              | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
|* 19 |                INDEX RANGE SCAN                | IDX_ROLE_TEST2              |   380K|  8907K|       |  1851   (1)| 00:00:23 |
|* 20 |             HASH JOIN OUTER                    |                             |  1461 |  3093K|       | 57674   (1)| 00:11:33 |
|* 21 |              TABLE ACCESS FULL                 | POLICY                      |  1461 |   208K|       |  4261   (1)| 00:00:52 |
|  22 |              VIEW                              |                             |  6221 |    11M|       | 53413   (1)| 00:10:41 |
|  23 |               SORT GROUP BY                    |                             |  6221 |    11M|    24M| 53413   (1)| 00:10:41 |
|  24 |                VIEW                            |                             |  6221 |    11M|       | 50780   (1)| 00:10:10 |
|  25 |                 SORT ORDER BY                  |                             |  6221 |  1312K|  2856K| 50780   (1)| 00:10:10 |
|  26 |                  NESTED LOOPS OUTER            |                             |  6221 |  1312K|       | 50485   (1)| 00:10:06 |
|  27 |                   NESTED LOOPS OUTER           |                             |  6221 |  1002K|       | 27677   (1)| 00:05:33 |
|  28 |                    NESTED LOOPS                |                             |  6221 |   692K|       |  4869   (1)| 00:00:59 |
|  29 |                     VIEW                       |                             |  1461 |    98K|       |     5   (0)| 00:00:01 |
|  30 |                      TABLE ACCESS FULL         | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
|  31 |                     TABLE ACCESS BY INDEX ROWID| ROLE                        |     4 |   180 |       |     5   (0)| 00:00:01 |
|* 32 |                      INDEX RANGE SCAN          | IDX_ROLE_TEST2              |     4 |       |       |     3   (0)| 00:00:01 |
|* 33 |                    TABLE ACCESS BY INDEX ROWID | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 34 |                     INDEX RANGE SCAN           | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|* 35 |                   TABLE ACCESS BY INDEX ROWID  | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 36 |                    INDEX RANGE SCAN            | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|  37 |            TABLE ACCESS BY INDEX ROWID         | ROLE                        |     2 |    90 |       |     4   (0)| 00:00:01 |
|* 38 |             INDEX RANGE SCAN                   | IDX_ROLE_TEST2              |     1 |       |       |     3   (0)| 00:00:01 |
|  39 |           VIEW                                 |                             | 73346 |   141M|       | 67762   (2)| 00:13:34 |
|* 40 |            FILTER                              |                             |       |       |       |            |          |
|  41 |             HASH GROUP BY                      |                             | 73346 |  6303K|   714M| 67762   (2)| 00:13:34 |
|  42 |              NESTED LOOPS OUTER                |                             |  7334K|   615M|       | 13903   (1)| 00:02:47 |
|  43 |               NESTED LOOPS OUTER               |                             |  9912 |   493K|       |  5109   (1)| 00:01:02 |
|  44 |                VIEW                            |                             |  1461 | 29220 |       |     5   (0)| 00:00:01 |
|  45 |                 TABLE ACCESS FULL              | SYS_TEMP_0FD9D6613_773E7914 |  1461 | 29220 |       |     5   (0)| 00:00:01 |
|  46 |                TABLE ACCESS BY INDEX ROWID     | ROLE                        |     7 |   217 |       |     6   (0)| 00:00:01 |
|* 47 |                 INDEX RANGE SCAN               | IDX_ROLE_TEST2              |     7 |       |       |     3   (0)| 00:00:01 |
|  48 |               VIEW                             |                             |   740 | 27380 |       |     1   (0)| 00:00:01 |
|  49 |                INLIST ITERATOR                 |                             |       |       |       |            |          |
|  50 |                 TABLE ACCESS BY INDEX ROWID    | PROPERTY                    |     1 |    37 |       |     6   (0)| 00:00:01 |
|* 51 |                  INDEX RANGE SCAN              | IDX_PROPERTY_TEST2          |     1 |       |       |     5   (0)| 00:00:01 |
|* 52 |          TABLE ACCESS BY INDEX ROWID           | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 53 |           INDEX RANGE SCAN                     | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|* 54 |         TABLE ACCESS BY INDEX ROWID            | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 55 |          INDEX RANGE SCAN                      | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|* 56 |        TABLE ACCESS BY INDEX ROWID             | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 57 |         INDEX RANGE SCAN                       | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|  58 |       TABLE ACCESS BY INDEX ROWID              | PROPERTY                    |     2 |    60 |       |     5   (0)| 00:00:01 |
|* 59 |        INDEX RANGE SCAN                        | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
|  60 |      TABLE ACCESS BY INDEX ROWID               | ROLE                        |     7 |   315 |       |     6   (0)| 00:00:01 |
|* 61 |       INDEX RANGE SCAN                         | IDX_ROLE_TEST2              |     7 |       |       |     3   (0)| 00:00:01 |
|* 62 |     TABLE ACCESS BY INDEX ROWID                | PROPERTY                    |     1 |    51 |       |     4   (0)| 00:00:01 |
|* 63 |      INDEX RANGE SCAN                          | IDX_PROPERTY_TEST2          |     1 |       |       |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------3 - filter("ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "ENDORSEMENTID" IS NULL AND ("PRODUCTCODE"='00070001' OR "PRODUCTCODE"='00070002' OR "PRODUCTCODE"='00070003' OR "PRODUCTCODE"='00070004' OR "PRODUCTCODE"='00070005' OR "PRODUCTCODE"='00070006' OR "PRODUCTCODE"='00130001') AND ("UNIQUECODE" LIKE '013100%' OR "UNIQUECODE" LIKE '011000%') AND "POLICYSTATUS"='$$900001106001')11 - access("PRO2"."TOPACTUALID"(+)="P"."TOPACTUALID" AND "PRO2"."POLICYNO"(+)="P"."POLICYNO")13 - access("P"."TOPACTUALID"="R4"."TOPACTUALID"(+) AND "P"."POLICYNO"="R4"."POLICYNO"(+))16 - access("R"."TOPACTUALID"(+)="P"."TOPACTUALID")19 - access("R"."KIND"(+)='PAYMENTSCHEDULEONAPPLICATION')20 - access("P"."TOPACTUALID"="PRO6"."TOPACTUALID"(+) AND "P"."POLICYNO"="PRO6"."POLICYNO"(+))21 - filter("P"."ISSUEDATE">TIMESTAMP' 2016-04-11 00:00:00' AND "P"."ENDORSEMENTID" IS NULL AND ("P"."PRODUCTCODE"='00070001' OR "P"."PRODUCTCODE"='00070002' OR "P"."PRODUCTCODE"='00070003' OR "P"."PRODUCTCODE"='00070004' OR "P"."PRODUCTCODE"='00070005' OR "P"."PRODUCTCODE"='00070006' OR "P"."PRODUCTCODE"='00130001') AND ("P"."UNIQUECODE" LIKE '013100%' OR "P"."UNIQUECODE" LIKE '011000%') AND "P"."POLICYSTATUS"='$$900001106001')32 - access("R"."KIND"='SPECIALAGREEMENTITEM' AND "R"."TOPACTUALID"="P"."TOPACTUALID")33 - filter("R"."TOPAGREEMENTID"="PRO2"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO2"."PARENTAGREEMENTID"(+))34 - access("PRO2"."KIND"(+)='SPECIALAGREEMENTTEXT' AND "R"."TOPACTUALID"="PRO2"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO2"."PARENTACTUALID"(+))35 - filter("R"."TOPAGREEMENTID"="PRO1"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO1"."PARENTAGREEMENTID"(+))36 - access("PRO1"."KIND"(+)='SERIALNO' AND "R"."TOPACTUALID"="PRO1"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO1"."PARENTACTUALID"(+))38 - access("R3"."KIND"(+)='INTERMEDIARYINFO' AND "P"."TOPACTUALID"="R3"."TOPACTUALID"(+))40 - filter(MAX(DECODE("PRO"."KIND",'SERIALNO',"PRO"."VALUE",''))='1')47 - access("R"."KIND"(+)='HANDLER' AND "R"."TOPACTUALID"(+)="P"."TOPACTUALID")51 - access(("PRO"."KIND"='SERIALNO' OR "PRO"."KIND"='STAFFNAME') AND "PRO"."TOPACTUALID"="R"."TOPACTUALID" AND "PRO"."PARENTACTUALID"="R"."ACTUALID")52 - filter("R3"."TOPAGREEMENTID"="PRO3"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO3"."PARENTAGREEMENTID"(+))53 - access("PRO3"."KIND"(+)='INTERMEDIARYTYPE' AND "R3"."TOPACTUALID"="PRO3"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO3"."PARENTACTUALID"(+))54 - filter("R3"."TOPAGREEMENTID"="PRO4"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO4"."PARENTAGREEMENTID"(+))55 - access("PRO4"."KIND"(+)='INTERMEDIARYNAME' AND "R3"."TOPACTUALID"="PRO4"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO4"."PARENTACTUALID"(+))56 - filter("R3"."TOPAGREEMENTID"="PRO5"."TOPAGREEMENTID"(+) AND "R3"."PARENTAGREEMENTID"="PRO5"."PARENTAGREEMENTID"(+))57 - access("PRO5"."KIND"(+)='OFFICEADDRESS' AND "R3"."TOPACTUALID"="PRO5"."TOPACTUALID"(+) AND "R3"."ACTUALID"="PRO5"."PARENTACTUALID"(+))59 - access("PRO1"."KIND"(+)='APPLICATIONDATE' AND "PRO1"."TOPACTUALID"(+)="P"."TOPACTUALID")61 - access("R"."KIND"(+)='DATEINFO' AND "P"."TOPACTUALID"="R"."TOPACTUALID"(+))62 - filter("R"."TOPAGREEMENTID"="PRO"."TOPAGREEMENTID"(+) AND "R"."PARENTAGREEMENTID"="PRO"."PARENTAGREEMENTID"(+))63 - access("PRO"."KIND"(+)='UNDERWRITINGDATE' AND "R"."TOPACTUALID"="PRO"."TOPACTUALID"(+) AND "R"."ACTUALID"="PRO"."PARENTACTUALID"(+))

利用WITH AS改写SQL相关推荐

  1. 利用 sys.sysprocesses 检查 Sql Server的阻塞和死锁

    Sys.SysProcesses 系统表是一个很重要的系统视图,主要用来定位与解决Sql Server的阻塞和死锁. MSDN:包含正在 SQL Server 实例上运行的进程的相关信息.这些进程可以 ...

  2. 如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语

    如何分表分库 Mycat 与shadingjdbc 区别? Mycat 是基于服务器端的形式实现数据库代理 基于服务器端的形式 改写sql语句 shadingjdbc 基于客户端 改写sql语句的形式 ...

  3. [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

    [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语 ...

  4. oracle bcp out,SQL Server利用bcp命令把SQL语句结果生成文本文件

    这篇文章主要为大家详细介绍了SQL Server利用bcp命令把SQL语句结果生成文本文件,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧!在SQL ...

  5. 利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法)

    利用Navicat Premium将SQL Server数据库转为My SQL数据库(解决Mac无法打开SQL Server 脚本文件的方法) 安装好Navicat Premium,SQL Serve ...

  6. Mybatis Plugin 以及Druid Filer 改写SQL

    背景 工作中偶尔会碰到需要统一修改SQL的情况,例如有以下表结构: CREATE TABLE `test_user` (`id` int(11) NOT NULL AUTO_INCREMENT,`ac ...

  7. 一文教你如何使用Mybatis Plugin 以及Druid Filer 改写SQL

    背景 工作中偶尔会碰到需要统一修改SQL的情况,例如有以下表结构: CREATE TABLE test_user ( id int(11) NOT NULL AUTO_INCREMENT, accou ...

  8. 优雅的利用Mybatis插件实现sql查询耗时统计

    优雅的利用Mybatis插件实现sql查询耗时统计 一. Mybatis反射机制讲解 二. 代理模式讲解 静态代理 动态代理 JDK动态代理参考代码 Proxy.newProxyInstance(xx ...

  9. sql优化第一天,认识优化器和RBO中的等价改写SQL例子1

    oracle有两种优化器,一种是基于成本的优化器CBO,一种是基于规则的优化器RBO,早期的版本使用基于规则的RBO优化器.从oracle10 g开始起,CBO已经成为比较成熟的优化器,但是要对sql ...

最新文章

  1. jQuery源码分析系列:属性操作
  2. ASP.NET Web Pages – 文件夹简介
  3. 安装全局消息钩子实现dll窗体程序注入
  4. 一对一交友源码,一对一视频交友源码,这些功能是主流
  5. linux获取明文密码,linux下抓取内存中明文密码mimipenguin
  6. python分析服务器日志_python实现web服务器日志分析脚本
  7. php js对话框,JavaScript_js弹出框、对话框、提示框、弹窗实现方法总结(推荐),一、JS的三种最常见的对话框- phpStudy...
  8. raspberry pi_使用Raspberry Pi和pi-hole阻止网络上的广告
  9. python操作注册表能干啥_转 python操作注册表模块_winreg
  10. 有哪些在朋友圈发会被秒赞的文案?
  11. 亿晟科技人脸识别门禁系统方案整体解决办法
  12. 【面试题】数字转成汉字形式
  13. vuejs实现购物车满多少减多少
  14. 学生托管班_小学生托管班托管班价格是多少?如何收费?
  15. nginx 代理解决跨域问题
  16. 一些经常送福利的技术公众号
  17. java security 详解_Spring Security Remember me使用及原理详解
  18. python 打包发布(含静态文件)
  19. 【权限提升】windows平台-提权项目MSFCS溢出漏洞
  20. LTE无线网络全网优化评估手段

热门文章

  1. linux网桥转发自身数据,linux网桥理解之一
  2. 最近遇到的异常与错误总结
  3. 当科技成为潮流,下一个新十年的未来应该如何畅想?
  4. android 股票 开发,Android版的股票行情K线图开发
  5. 全球地名中英文对照表(Q-R)
  6. python爬虫之必应图片
  7. 2022年全球市场高纯度橙皮苷粉末总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. 机器学习第四课:SVM前置知识点(凸优化问题)
  9. 有个疑问--RTOS系统中,低优先级任务什么时候得到cpu去运行
  10. 计算机鼠标由传感器来监视,2020年人教版九年级物理全册:16.4“变阻器”过关检测练习题D卷...