环境:aix 7.1,oracle12.1.0.2 cdb

优化前SQL

select *from (select row_.*, rownum rownum_from (select '弱覆盖' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select city_name,county_name,grid_id,casewhen rsrpSum > 0 and counts > 0 andrsrpSum / counts < 0.95 then1else0end rfgSumfrom (select city_name,county_name,grid_id,sum(rsrp_value) rsrpSum,count(grid_id) countsfrom (select casewhen LTE_RSRP > -105 then1else0end rsrp_value,city_name,county_name,grid_idfrom SJCL.measured_datawhere IS_MACRO_STATION = 1and grid_id is not nulland terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')) t1group by t1.city_name,t1.county_name,t1.grid_id) t2) t3where rfgSum >= 1group by city_name, county_name, grid_idunion allselect '无主控覆盖' as questionType,city_name as cityName,county_name countyName,grid_id gridId,'LTE' as netWorkTypefrom (select casewhen ci_count / grid_count > 0.3 then1else0end gr_ci,city_name,county_name,grid_id,LTE_CIfrom (select count(casewhen t1.network_type = 'LTE' thent1.lte_ciwhen t1.network_type = 'GSM' thent1.gsm_cidwhen t1.network_type = 'TD' thent1.td_cidelsenullend) ci_count,(select count(grid_id)from SJCL.measured_datawhere grid_id = t1.grid_idand IS_MACRO_STATION = 1and terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')) grid_count,t1.city_name,t1.county_name,t1.grid_id,LTE_CIfrom SJCL.measured_data t1where t1.grid_id is not nulland t1.IS_MACRO_STATION = 1and terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')group by t1.city_name,t1.county_name,t1.grid_id,t1. LTE_CI) t2) t3group by city_name, county_name, grid_idhaving sum(gr_ci) >= 3union allselect '质差' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select city_name,county_name,grid_id,casewhen rsrpSum > 0 and counts > 0 andrsrpSum / counts > 0.05 then1else0end rfgSumfrom (select city_name,county_name,grid_id,sum(rsrp_value) rsrpSum,count(grid_id) countsfrom (select casewhen LTE_RSRP > -100 andLTE_SINR < 0 then1else0end rsrp_value,city_name,county_name,grid_idfrom SJCL.measured_datawhere IS_MACRO_STATION = 1and grid_id is not nulland terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')) t1group by t1.city_name,t1.county_name,t1.grid_id) t2) t3where rfgSum >= 1group by city_name, county_name, grid_idunion allselect '越区覆盖' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select tc.*, tl.latitude, tl.longitudefrom (select *from (select t.city_name,t.county_name,t.grid_id,t. LTE_CI,t. LTE_TAC,nvl(t.grid_longitude, 0) grid_longitude,nvl(t.grid_latitude, 0) grid_latitude,count(LTE_CI) /(select count(grid_id)from SJCL.measured_data awhere a.grid_id = t.grid_idand a.is_macro_station = 1and terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')) as ci_ratiofrom SJCL.measured_data twhere t.grid_id is not nulland t.is_macro_station = 1and t.grid_longitude is not nulland t.grid_latitude is not nulland LTE_CI is not nulland LTE_TAC is not nulland terminal_upload_time >=to_date('2017-12-02 00:00:00','yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-02 23:59:59','yyyy/mm/dd hh24:mi:ss')group by t.city_name,t.county_name,t.grid_id,t.               LTE_CI,t.               LTE_TAC,t.grid_longitude,t.grid_latitude)where ci_ratio > 0.6) tc,SJCL.tdl_cm_cell tlwhere REGEXP_SUBSTR(tl.ci, '[^-]+', 1, 3) * 256 +REGEXP_SUBSTR(tl.ci, '[^-]+', 1, 4) = tc.lte_ciand tl.ENBAJ08 = tc.lte_tac) ttwhere exists (select *from (select count(1) as siteNumfrom SJCL.tdl_cm_cellwhere region_name = tt.city_nameand ((longitude >= tt.longitude andlongitude < tt.grid_longitude) or(longitude < tt.longitude andlongitude >= tt.grid_longitude))and ((latitude >= tt.latitude andlongitude < tt.grid_latitude) or(latitude < tt.latitude andlatitude >= tt.grid_latitude)))where siteNum > 4)) row_where rownum <= 100)where rownum_ >= 90

执行计划如下:

Plan Hash Value  : 4283313742 ----------------------------------------------------------------------------------------------------
| Id   | Operation                        | Name          | Rows   | Bytes    | Cost    | Time     |
----------------------------------------------------------------------------------------------------
|    0 | SELECT STATEMENT                 |               |    100 |    41200 | 8556469 | 00:05:35 |
|  * 1 |   VIEW                           |               |    100 |    41200 | 8556469 | 00:05:35 |
|  * 2 |    COUNT STOPKEY                 |               |        |          |         |          |
|    3 |     VIEW                         |               |   2983 |  1190217 | 8556469 | 00:05:35 |
|    4 |      UNION-ALL                   |               |        |          |         |          |
|    5 |       HASH GROUP BY              |               |    994 |    10934 |    1106 | 00:00:01 |
|    6 |        VIEW                      |               |    994 |    10934 |    1106 | 00:00:01 |
|  * 7 |         FILTER                   |               |        |          |         |          |
|    8 |          HASH GROUP BY           |               |    994 |    25844 |    1106 | 00:00:01 |
|    9 |           PARTITION RANGE SINGLE |               |  19877 |   516802 |    1104 | 00:00:01 |
| * 10 |            TABLE ACCESS FULL     | MEASURED_DATA |  19877 |   516802 |    1104 | 00:00:01 |
| * 11 |       FILTER                     |               |        |          |         |          |
|   12 |        SORT AGGREGATE            |               |      1 |       15 |         |          |
|   13 |         PARTITION RANGE SINGLE   |               |     16 |      240 |    1104 | 00:00:01 |
| * 14 |          TABLE ACCESS FULL       | MEASURED_DATA |     16 |      240 |    1104 | 00:00:01 |
|   15 |        HASH GROUP BY             |               |    994 |    13916 | 8551024 | 00:05:35 |
|   16 |         VIEW                     |               |  19877 |   278278 | 8551024 | 00:05:35 |
|   17 |          HASH GROUP BY           |               |  19877 |   775203 | 8551024 | 00:05:35 |
|   18 |           PARTITION RANGE SINGLE |               |  19877 |   775203 |    1104 | 00:00:01 |
| * 19 |            TABLE ACCESS FULL     | MEASURED_DATA |  19877 |   775203 |    1104 | 00:00:01 |
|   20 |       HASH GROUP BY              |               |    994 |    10934 |    1106 | 00:00:01 |
|   21 |        VIEW                      |               |    994 |    10934 |    1106 | 00:00:01 |
| * 22 |         FILTER                   |               |        |          |         |          |
|   23 |          HASH GROUP BY           |               |    994 |    28826 |    1106 | 00:00:01 |
|   24 |           PARTITION RANGE SINGLE |               |  19877 |   576433 |    1104 | 00:00:01 |
| * 25 |            TABLE ACCESS FULL     | MEASURED_DATA |  19877 |   576433 |    1104 | 00:00:01 |
| * 26 |       FILTER                     |               |        |          |         |          |
|   27 |        HASH GROUP BY             |               |      1 |       91 |    3233 | 00:00:01 |
| * 28 |         FILTER                   |               |        |          |         |          |
| * 29 |          HASH JOIN               |               |     59 |     5369 |    2168 | 00:00:01 |
|   30 |           PARTITION RANGE SINGLE |               |    387 |    16641 |    1104 | 00:00:01 |
| * 31 |            TABLE ACCESS FULL     | MEASURED_DATA |    387 |    16641 |    1104 | 00:00:01 |
|   32 |           TABLE ACCESS FULL      | TDL_CM_CELL   | 216734 | 10403232 |    1063 | 00:00:01 |
|   33 |          VIEW                    |               |      1 |          |    1064 | 00:00:01 |
| * 34 |           FILTER                 |               |        |          |         |          |
|   35 |            SORT AGGREGATE        |               |      1 |       18 |         |          |
| * 36 |             TABLE ACCESS FULL    | TDL_CM_CELL   |      1 |       18 |    1064 | 00:00:01 |
|   37 |        SORT AGGREGATE            |               |      1 |       15 |         |          |
|   38 |         PARTITION RANGE SINGLE   |               |     16 |      240 |    1104 | 00:00:01 |
| * 39 |          TABLE ACCESS FULL       | MEASURED_DATA |     16 |      240 |    1104 | 00:00:01 |
----------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter("ROWNUM_">=90)
* 2 - filter(ROWNUM<=100)
* 7 - filter(CASE WHEN (SUM(CASE WHEN TO_NUMBER("LTE_RSRP")>(-105) THEN 1 ELSE 0 END )>0 AND COUNT("GRID_ID")>0 AND SUM(CASE WHEN TO_NUMBER("LTE_RSRP")>(-105) THEN 1 ELSE 0 END)/COUNT("GRID_ID")<0.95) THEN 1 ELSE 0 END >=1)
* 10 - filter("GRID_ID" IS NOT NULL AND "IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 11 - filter(SUM("GR_CI")>=3)
* 14 - filter("GRID_ID"=:B1 AND "IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 19 - filter("T1"."GRID_ID" IS NOT NULL AND "T1"."IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 22 - filter(CASE WHEN (SUM(CASE WHEN (TO_NUMBER("LTE_RSRP")>(-100) AND TO_NUMBER("LTE_SINR")<0) THEN 1 ELSE 0 END )>0 AND COUNT("GRID_ID")>0 AND SUM(CASE WHEN (TO_NUMBER("LTE_RSRP")>(-100) ANDTO_NUMBER("LTE_SINR")<0) THEN 1 ELSE 0 END )/COUNT("GRID_ID")>0.05) THEN 1 ELSE 0 END >=1)
* 25 - filter("GRID_ID" IS NOT NULL AND "IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 26 - filter(COUNT("LTE_CI")/ (SELECT COUNT("GRID_ID") FROM "SJCL"."MEASURED_DATA" "A" WHERE "A"."GRID_ID"=:B1 AND "A"."IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-0223:59:59', 'syyyy-mm-dd hh24:mi:ss'))>0.6)
* 28 - filter( EXISTS (SELECT 0 FROM (SELECT COUNT(*) "SITENUM" FROM "SJCL"."TDL_CM_CELL" "TDL_CM_CELL" WHERE "REGION_NAME"=:B1 AND ("LONGITUDE">=:B2 AND "LONGITUDE"<TO_NUMBER(:B3) OR "LONGITUDE"<:B4AND "LONGITUDE">=TO_NUMBER(:B5)) AND ("LATITUDE">=:B6 AND "LONGITUDE"<TO_NUMBER(:B7) OR "LATITUDE"<:B8 AND "LATITUDE">=TO_NUMBER(:B9)) HAVING COUNT(*)>4) "from$_subquery$_021"))
* 29 - access(TO_NUMBER( REGEXP_SUBSTR ("TL"."CI",'[^-]+',1,3))*256+TO_NUMBER( REGEXP_SUBSTR ("TL"."CI",'[^-]+',1,4))=TO_NUMBER("T"."LTE_CI") AND "TL"."ENBAJ08"=TO_NUMBER("T"."LTE_TAC"))
* 31 - filter("T"."GRID_ID" IS NOT NULL AND "T"."GRID_LONGITUDE" IS NOT NULL AND "T"."GRID_LATITUDE" IS NOT NULL AND "LTE_CI" IS NOT NULL AND "LTE_TAC" IS NOT NULL AND "T"."IS_MACRO_STATION"=1 AND"TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 34 - filter(COUNT(*)>4)
* 36 - filter("REGION_NAME"=:B1 AND ("LONGITUDE">=:B2 AND "LONGITUDE"<TO_NUMBER(:B3) OR "LONGITUDE"<:B4 AND "LONGITUDE">=TO_NUMBER(:B5)) AND ("LATITUDE">=:B6 AND "LONGITUDE"<TO_NUMBER(:B7) OR"LATITUDE"<:B8 AND "LATITUDE">=TO_NUMBER(:B9)))
* 39 - filter("A"."GRID_ID"=:B1 AND "A"."IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-02 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))

卡住,结果无法出来。问题在于:
1.多个不当扫描measured_data

2.不当查询tdl_cm_cell,简单而然即nest loop+full scan

3.不当使用子查询

这肯定是非专业人士写的。

改造思路

1.减少表扫描次数,尽量一次,可以利用with和group by达到

2.消除子查询,改为join之类

3.对必要的表创建索引

修改之后

with x1 as(select count(grid_id) as grid_count, grid_idfrom SJCL.measured_datawhere IS_MACRO_STATION = 1and terminal_upload_time >=to_date('2017-12-03 00:00:00', 'yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-03 23:59:59', 'yyyy/mm/dd hh24:mi:ss')group by grid_id),
s1 as(select city_name,county_name,grid_id,sum(rsrp_value_100) rsrpSum_100,sum(rsrp_value_105) rsrpSum_105,count(grid_id) countsfrom ( --3select casewhen LTE_RSRP > -100 and LTE_SINR < 0 then1else0end rsrp_value_100,casewhen LTE_RSRP > -105 then1else0end rsrp_value_105,city_name,county_name,grid_idfrom SJCL.measured_datawhere IS_MACRO_STATION = 1and grid_id is not nulland terminal_upload_time >=to_date('2017-12-03 00:00:00', 'yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-03 23:59:59', 'yyyy/mm/dd hh24:mi:ss')) t1group by t1.city_name, t1.county_name, t1.grid_id),
vw_ttl as(select t.city_name,t.county_name,t.grid_id,t. LTE_CI,t. LTE_TAC,t.grid_longitude grid_longitude,t.grid_latitude grid_latitude,count(casewhen t.network_type = 'LTE' thent.lte_ciwhen t.network_type = 'GSM' thent.gsm_cidwhen t.network_type = 'TD' thent.td_cidelsenullend) ci_count,x1.grid_count,casewhen x1.grid_count = 0 then0elsecount(LTE_CI) / x1.grid_countend as ci_ratio,grouping_id(t.LTE_TAC) as gidfrom SJCL.measured_data tjoin x1on x1.grid_id = t.grid_idwhere t.grid_id is not nulland t.is_macro_station = 1--and t.city_name='宁德' --and t.county_name='霞浦县'and terminal_upload_time >=to_date('2017-12-03 00:00:00', 'yyyy/mm/dd hh24:mi:ss')and terminal_upload_time <=to_date('2017-12-03 23:59:59', 'yyyy/mm/dd hh24:mi:ss')group by grouping sets((t.city_name, t.county_name, t.grid_id, t.LTE_CI, x1.grid_count, t.LTE_TAC, t.grid_longitude, t.grid_latitude),(t.city_name, t.county_name, t.grid_id, t.LTE_CI, x1.grid_count)))
select *from (select row_.*, rownum rownum_from (select '弱覆盖' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select city_name,county_name,grid_id,casewhen rsrpSum > 0 and counts > 0 andrsrpSum / counts < 0.95 then1else0end rfgSumfrom (select city_name,county_name,grid_id,rsrpsum_105 as rsrpSum,countsfrom s1))where rfgSum >= 1group by city_name, county_name, grid_idunion all --e1select '无主控覆盖' as questionType,city_name as cityName,county_name countyName,grid_id gridId,'LTE' as netWorkTypefrom (select casewhen ci_count / grid_count > 0.3 then1else0end gr_ci,city_name,county_name,grid_id,LTE_CIfrom vw_ttlwhere gid = 1)group by city_name, county_name, grid_idhaving sum(gr_ci) >= 3union all --e2select '质差' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select city_name,county_name,grid_id,casewhen rsrpSum > 0 and counts > 0 andrsrpSum / counts > 0.05 then1else0end rfgSumfrom (select city_name,county_name,grid_id,rsrpsum_100 as rsrpSum,countsfrom s1))where rfgSum >= 1group by city_name, county_name, grid_idunion all --e3 select '越区覆盖' as questionType,city_name as cityName,county_name as countyName,grid_id as gridId,'LTE' as netWorkTypefrom (select tc.*, tl.latitude, tl.longitudefrom (select city_name,county_name,grid_id,LTE_CI,LTE_TAC,grid_longitude,grid_latitude,ci_ratiofrom vw_ttlwhere gid = 0and ci_ratio > 0.6) tc,SJCL.tdl_cm_cell tlwhere tc.lte_ci = to_char(tl.eci)and tl.ENBAJ08 = tc.lte_tac) ttwhere (select /*+index(s IDX_TDL_CM_CELL_CITYNAME) */count(1) as siteNumfrom SJCL.tdl_cm_cell swhere region_name = tt.city_nameand ((longitude >= tt.longitude andlongitude < tt.grid_longitude) or(longitude < tt.longitude andlongitude >= tt.grid_longitude))and ((latitude >= tt.latitude andlongitude < tt.grid_latitude) or(latitude < tt.latitude andlatitude >= tt.grid_latitude))) > 4--e4
                ) row_where rownum <= 100)where rownum_ >= 1

计划如下:

 Plan Hash Value  : 3577282419 -------------------------------------------------------------------------------------------------------------
| Id   | Operation                      | Name                        | Rows   | Bytes    | Cost | Time     |
-------------------------------------------------------------------------------------------------------------
|    0 | SELECT STATEMENT               |                             |    100 |    41200 | 5905 | 00:00:01 |
|    1 |   TEMP TABLE TRANSFORMATION    |                             |        |          |      |          |
|    2 |    LOAD AS SELECT              | SYS_TEMP_0FDA2B063_13545153 |        |          |      |          |
|    3 |     HASH GROUP BY              |                             |  18603 |   576693 |  554 | 00:00:01 |
|    4 |      PARTITION RANGE SINGLE    |                             |  18603 |   576693 |  553 | 00:00:01 |
|  * 5 |       TABLE ACCESS FULL        | MEASURED_DATA               |  18603 |   576693 |  553 | 00:00:01 |
|    6 |    LOAD AS SELECT              | SYS_TEMP_0FDA2B064_13545153 |        |          |      |          |
|    7 |     SORT GROUP BY ROLLUP       |                             |  38788 |  2831524 | 1782 | 00:00:01 |
|  * 8 |      HASH JOIN                 |                             |  38788 |  2831524 | 1110 | 00:00:01 |
|    9 |       VIEW                     |                             |   8799 |   158382 |  557 | 00:00:01 |
|   10 |        HASH GROUP BY           |                             |   8799 |   140784 |  557 | 00:00:01 |
|   11 |         PARTITION RANGE SINGLE |                             |  71006 |  1136096 |  553 | 00:00:01 |
| * 12 |          TABLE ACCESS FULL     | MEASURED_DATA               |  71006 |  1136096 |  553 | 00:00:01 |
|   13 |       PARTITION RANGE SINGLE   |                             |  18603 |  1023165 |  553 | 00:00:01 |
| * 14 |        TABLE ACCESS FULL       | MEASURED_DATA               |  18603 |  1023165 |  553 | 00:00:01 |
| * 15 |    VIEW                        |                             |    100 |    41200 | 3568 | 00:00:01 |
| * 16 |     COUNT STOPKEY              |                             |        |          |      |          |
|   17 |      VIEW                      |                             |  39189 | 15636411 | 3568 | 00:00:01 |
|   18 |       UNION-ALL                |                             |        |          |      |          |
|   19 |        HASH GROUP BY           |                             |  18603 |   725517 |   25 | 00:00:01 |
| * 20 |         VIEW                   |                             |  18603 |   725517 |   23 | 00:00:01 |
|   21 |          TABLE ACCESS FULL     | SYS_TEMP_0FDA2B063_13545153 |  18603 |   576693 |   23 | 00:00:01 |
| * 22 |        FILTER                  |                             |        |          |      |          |
|   23 |         HASH GROUP BY          |                             |   1940 |   100880 |  110 | 00:00:01 |
| * 24 |          VIEW                  |                             |  38788 |  2016976 |  107 | 00:00:01 |
|   25 |           TABLE ACCESS FULL    | SYS_TEMP_0FDA2B064_13545153 |  38788 |  2831524 |  107 | 00:00:01 |
|   26 |        HASH GROUP BY           |                             |  18603 |   725517 |   25 | 00:00:01 |
| * 27 |         VIEW                   |                             |  18603 |   725517 |   23 | 00:00:01 |
|   28 |          TABLE ACCESS FULL     | SYS_TEMP_0FDA2B063_13545153 |  18603 |   576693 |   23 | 00:00:01 |
| * 29 |        FILTER                  |                             |        |          |      |          |
| * 30 |         HASH JOIN              |                             |     43 |    41022 | 3279 | 00:00:01 |
|   31 |          TABLE ACCESS FULL     | TDL_CM_CELL                 | 216734 |  5418350 | 1063 | 00:00:01 |
| * 32 |          VIEW                  |                             |  38788 | 36034052 |  107 | 00:00:01 |
|   33 |           TABLE ACCESS FULL    | SYS_TEMP_0FDA2B064_13545153 |  38788 |  2831524 |  107 | 00:00:01 |
|   34 |         SORT AGGREGATE         |                             |      1 |       18 |      |          |
|   35 |          CONCATENATION         |                             |        |          |      |          |
| * 36 |           INDEX RANGE SCAN     | IDX_TDL_CM_CELL_CITYNAME    |      1 |       18 |    3 | 00:00:01 |
| * 37 |           INDEX RANGE SCAN     | IDX_TDL_CM_CELL_CITYNAME    |      1 |       18 |    3 | 00:00:01 |
-------------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
------------------------------------------
* 5 - filter("GRID_ID" IS NOT NULL AND "IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-03 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 8 - access("X1"."GRID_ID"="T"."GRID_ID")
* 12 - filter("IS_MACRO_STATION"=1 AND "TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-03 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 14 - filter("T"."GRID_ID" IS NOT NULL AND "T"."IS_MACRO_STATION"=1 AND "T"."TERMINAL_UPLOAD_TIME"<=TO_DATE(' 2017-12-03 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))
* 15 - filter("ROWNUM_">=1)
* 16 - filter(ROWNUM<=100)
* 20 - filter(CASE WHEN ("RSRPSUM_105">0 AND "COUNTS">0 AND "RSRPSUM_105"/"COUNTS"<0.95) THEN 1 ELSE 0 END >=1)
* 22 - filter(SUM(CASE WHEN "CI_COUNT"/"GRID_COUNT">0.3 THEN 1 ELSE 0 END )>=3)
* 24 - filter("GID"=1)
* 27 - filter(CASE WHEN ("RSRPSUM_100">0 AND "COUNTS">0 AND "RSRPSUM_100"/"COUNTS">0.05) THEN 1 ELSE 0 END >=1)
* 29 - filter( (SELECT /*+ INDEX ("S" "IDX_TDL_CM_CELL_CITYNAME") */ COUNT(*) FROM "SJCL"."TDL_CM_CELL" "S"<not feasible>)
* 30 - access("LTE_CI"=TO_CHAR("TL"."ECI") AND "TL"."ENBAJ08"=TO_NUMBER("LTE_TAC"))
* 32 - filter("GID"=0 AND "CI_RATIO">0.6)
* 36 - access("REGION_NAME"=:B1 AND "LONGITUDE">=TO_NUMBER(:B2) AND "LONGITUDE"<:B3)
* 36 - filter("LATITUDE">=:B1 AND "LONGITUDE"<TO_NUMBER(:B2) OR "LATITUDE"<:B3 AND "LATITUDE">=TO_NUMBER(:B4))
* 37 - access("REGION_NAME"=:B1 AND "LONGITUDE">=:B2 AND "LONGITUDE"<TO_NUMBER(:B3))
* 37 - filter(("LATITUDE">=:B1 AND "LONGITUDE"<TO_NUMBER(:B2) OR "LATITUDE"<:B3 AND "LATITUDE">=TO_NUMBER(:B4)) AND (LNNVL("LONGITUDE"<:B5) OR LNNVL("LONGITUDE">=TO_NUMBER(:B6))))

结果:1秒内出现结果
效率提升几千倍!

所以,把专业的事情给专业的人做很重要。做前端开发的并不擅长数据库设计和SQL编写。

转载于:https://www.cnblogs.com/lzfhope/p/8081335.html

oracle-sql优化-通过分组和缓存减少不必要的读相关推荐

  1. Oracle SQL 优化原则(实用篇)

    由于SQL优化优化起来比较复杂,并且还受环境限制,在开发过程中,写SQL必须遵循以下几点原则: 1.Oracle 采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他Where ...

  2. Oracle SQL优化 总结(大师级别)

    SQL 的优化主要涉及几个方面: (1)    相关的统计信息缺失或者不准确 (2)    索引问题 (3)    SQL 的本身的效率问题,比如使用绑定变量,批量DML 采用bulk等,这个就考验写 ...

  3. oracle sql优化

    (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处 ...

  4. Oracle+SQL优化第二弹

    SQL 语句性能优化(未完待续) 要使 Oracle SQL 语句具有最优的性能,需要从多方面进行优化,下面分别进行说明. 1 选用合适的 ORACLE 优化器 ORACLE 的优化器共有 3 种: ...

  5. oracle sql语句加速选项,Oracle SQL优化基本步骤

    本空间日志均为一种学习记录. ----------------该文章无法找到原创出自何处.若有侵范,请告知! 最近有尝试做SQL优化.一直不得要领,请逛到这里的高人提供一些优化实例(最好是有优化历程说 ...

  6. Oracle SQL优化准则

    (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): Oracle的解析器按照从右到左的顺序处理FROM子句中的表 名,FROM子句中写在最后的表(基础表 driving table)将被最先 ...

  7. oracle sql 优化分析点

    本文来源:http://www.cnblogs.com/quanweiru/archive/2013/05/24/3096781.html (1)     选择最有效率的表名顺序 ( 只在基于规则的优 ...

  8. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    https://www.cnblogs.com/kkterry/p/4253265.html 前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富 ...

  9. oracle更新优化,oracle sql 优化(待更新)

    1:>=代替> 2:少用* 3:尽量不用having 4:含有子查询的语句中减少对表的查询 SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_V ...

最新文章

  1. 第六篇T语言实例开发,多点找色应用
  2. Redis根据是否存在设置值
  3. fread读结构体返回值是0无错误_嵌入式C编程之错误处理(附代码例子)!
  4. java限制在同一台电脑上只允许有一个用户登录系统
  5. 使用Remix编写Solidity语言的小例子
  6. arp linux 清空_Linux怎么清理ARP缓存
  7. 跟幼师谈恋爱什么梗_和懂你的人谈恋爱,比“秋天的第一杯奶茶”要甜
  8. cad 打开硬件加速卡_老司机手把手带你解决,各种CAD疑难杂症
  9. 虚拟服务器无限网站个数,一个虚拟主机最多可以放几个网站
  10. 时间定位表达式-用于时间的加、减调整
  11. angularjs指令参数transclude
  12. 文件(夹)操作SHFileOperation (删除 复制 移动) 报错 无法读取源文件或磁盘
  13. VS2008 安装顺序
  14. python代码服务器上运行报错
  15. java 图片格式判断_Java判断文件是否为图片
  16. php展厅控制系统,展厅展馆设计智能中控系统
  17. hdu2154跳舞毯(dp)
  18. [Halcon例程学习]增强指纹纹理的coherence_enhancing_diff
  19. 微信广告转化归因几个坑 gdt_vid和clickid
  20. 准备学python用什么电脑_001-小白学python-初入python世界

热门文章

  1. 代码生成工具之Winform查询列表界面生成
  2. 专家:我国青少年网络安全立法还需完善
  3. lucene升级至5.x版本出现 :IllegalStateException: IllegalStateException: unexpected docvalues type NONE...
  4. 微软自夸Edge浏览器的电源效率
  5. 1 第一次画PCB总结
  6. C#实现Web文件的上传
  7. java泛型学习二:解惑通配符
  8. odoo xml样式_自定义Odoo的界面样式
  9. vue检测对象值_Vue 不能检测到对象属性的添加或删除,注意!!!
  10. 自定义JWT认证过滤器