Inlist 和 exists 的sql 优化:
-
ID 2 in list出来326行data, ID 3和4 327次因为有一次回表操作
-
ID 5 开始loop 总共loop 326 但是最终符合记录的之后271行,所以总共返回271行data
-
ID 6,7,8,9,10,11开始loop ,这个数字再执行过程中一直在增加
-
最终ID 11 符合index UUID"=:B1 :B1 就是inlist的结果集,是5542行
-
ID 9 和14 loop后, ID 14 从index返回11k的data,说明有重复,这部分数据给ID 8 继续loop
-
ID 7 11k的data 只驱动ID 16进行了472次loop,由于是PK返回472行,
说明NEST LOOP SEMI进行了去重,最终返回了10958行

- ID 7 返回10958 驱动ID 18 匹配了10k(10233行data)

-
ID 6 返回了 10233行data,在ID 5, 由于是semi 又去重,得到348个值和ID 20 loop,loop 348次返回271个值,
-
271个值就是最终的返回结果。


-------------------------------------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost | Time |
-------------------------------------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 42 | 924 | 52453 | 00:00:03 |
| * 1 | FILTER | | | | | |
| 2 | PARTITION LIST SINGLE | | 42 | 924 | 52426 | 00:00:03 |
| * 3 | TABLE ACCESS FULL | CPB_A | 42 | 924 | 52426 | 00:00:03 |
| 4 | NESTED LOOPS SEMI | | 1 | 198 | 27 | 00:00:01 |
| 5 | NESTED LOOPS | | 1 | 168 | 24 | 00:00:01 |
| 6 | NESTED LOOPS SEMI | | 1 | 125 | 20 | 00:00:01 |
| 7 | NESTED LOOPS | | 1 | 103 | 19 | 00:00:01 |
| 8 | PARTITION LIST SINGLE | | 1 | 39 | 13 | 00:00:01 |
| * 9 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED | CPBA_B | 1 | 39 | 13 | 00:00:01 |
| * 10 | INDEX RANGE SCAN | CPBA_B_FK2 | 9 | | 4 | 00:00:01 |
| 11 | PARTITION LIST SINGLE | | 1 | 64 | 6 | 00:00:01 |
| * 12 | TABLE ACCESS BY LOCAL INDEX ROWID BATCHED | CPCS_B | 1 | 64 | 6 | 00:00:01 |
| * 13 | INDEX RANGE SCAN | CPCS_B_FK1 | 2 | | 3 | 00:00:01 |
| * 14 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | CBDAP_B | 2 | 44 | 1 | 00:00:01 |
| * 15 | INDEX RANGE SCAN | CBDAP_B_PK | 1 | | 0 | 00:00:01 |
| * 16 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | PPTD_B | 1 | 43 | 4 | 00:00:01 |
| * 17 | INDEX RANGE SCAN | PPTD_B_UK1 | 1 | | 3 | 00:00:01 |
| * 18 | TABLE ACCESS BY GLOBAL INDEX ROWID BATCHED | EST_B | 21654 | 649620 | 3 | 00:00:01 |
| * 19 | INDEX RANGE SCAN | EST_B_PK | 1 | | 2 | 00:00:01 |
-------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
------------------------------------------
* 1 - filter( EXISTS (SELECT 0
FROM CBDAP_B EST_B,
EST_B PPTD_B,
PPTD_B CBDAP_B,
CBDAP_B CPCS_B,
CPBA_B CPBA_B
WHERE CPBA_B.UUID = :B1
AND CPBA_B.CODE = :B2
AND CPBA_B.FLAG = 'N'
AND CPBA_B.ID = CPCS_B.UUID
AND CPCS_B.CODE = :B3
AND CPCS_B.FLAG = 'N'
AND CPCS_B.ID = CBDAP_B.UUID
AND CBDAP_B.PAID_AMT > 0
AND CBDAP_B.FLAG = 'N'
AND CBDAP_B.CODE = :B4
AND CBDAP_B.UUID = PPTD_B.ID
AND PPTD_B.CODE = :B5
AND TO_DATE(INTERNAL_FUNCTION(PPTD_B.DATE), 'dd-MM-yy') <=
TO_DATE(INTERNAL_FUNCTION(CPCS_B.DATE), 'dd-MM-yy')
AND PPTD_B.FLAG = 'N'
AND EST_B.ID = CPCS_B.UUID
AND EST_B.NAME = 'MC'
AND EST_B.FLAG = 'N'))
* 3 - filter(CPB_A.CODE=:1 AND (RAWTOHEX(CPB_A.ID)=:2 OR RAWTOHEX(CPB_A.ID)=:3 OR RAWTOHEX(CPB_A.ID)=:4 OR RAWTOHEX(CPB_A.ID)=:5 OR RAWTOHEX(CPB_A.ID)=:6 OR
RAWTOHEX(CPB_A.)
* 9 - filter(CPBA_B.CODE=:B1 AND CPBA_B.FLAG='N')
* 10 - access(CPBA_B.UUID=:B1)
* 12 - filter(CPCS_B.CODE=:B1 AND CPCS_B.FLAG='N')
* 13 - access(CPBA_B.ID=CPCS_B.UUID)
* 14 - filter(EST_B.NAME='MC' AND EST_B.FLAG='N') ----join and where condition
* 15 - access(EST_B.ID=CPCS_B.UUID)
* 16 - filter(CBDAP_B.AMT>0 AND CBDAP_B.FLAG='N') ----join and where
* 17 - access(CPCS_B.ID=CBDAP_B.UUID AND CBDAP_B.CODE=:B1)
* 17 - filter(CBDAP_B.CODE=:B1)
* 18 - filter(PPTD_B.CODE=:B1 AND TO_DATE(DATE),'dd-MM-yy')<=TO_DATE(DATE),'dd-MM-yy') AND PPTD_B.FLAG='N')
* 19 - access(CBDAP_B.UUID=PPTD_B.ID)
SELECT CPB_A.ID
FROM CPB_A
WHERE EXISTS (SELECT NULL
FROM CPBA_B
INNER JOIN CPCS_B
ON CPBA_B.ID = CPCS_B.UUID
AND CPCS_B.CODE = CPB_A.CODE
AND CPCS_B.FLAG = 'N'
INNER JOIN CBDAP_B
ON CPCS_B.ID = CBDAP_B.UUID2
AND CBDAP_B.CODE = CPB_A.CODE
AND CBDAP_B.FLAG = 'N'
INNER JOIN PPTD_B
ON CBDAP_B.UUID3 = PPTD_B.ID
AND PPTD_B.CODE = CPB_A.CODE
AND PPTD_B.FLAG = 'N'
INNER JOIN EST_B
ON EST_B.ID = CPCS_B.UUID5
AND EST_B.FLAG = 'N'
WHERE CPB_A.ID = CPBA_B.UUID4
AND EST_B.NAME = 'MC'
AND (CBDAP_B.AMT > 0 AND
TO_DATE(PPTD_B.DATE, 'dd-MM-yy') <=
TO_DATE(CPCS_B.DATE, 'dd-MM-yy'))
AND CPBA_B.CODE = CPB_A.CODE
AND CPBA_B.FLAG = 'N')
AND CPB_A.CODE = :1
AND CPB_A.ID IN (:2,
:3,
:4,
:5,
:6,
:7,
:8,
:9,
:10,
:11,
:12,
:13,
:14,
:15,
:16,
:17,
:18,
:19,
:20,
:21,
:22,
:23,
:24,
:25,
:26,
:27,
:28,
:29,
:30,
:31,
:32,
:33,
:34,
:35,
:36,
:37,
:38,
:39,
:40,
:41,
:42,
:43,
:44,
:45,
:46,
:47,
:48,
:49,
:50,
:51,
:52,
:53,
:54,
:55,
:56,
:57,
:58,
:59,
:60,
:61,
:62,
:63,
:64,
:65,
:66,
:67,
:68,
:69,
:70,
:71,
:72,
:73,
:74,
:75,
:76,
:77,
:78,
:79,
:80,
:81,
:82,
:83,
:84,
:85,
:86,
:87,
:88,
:89,
:90,
:91,
:92,
:93,
:94,
:95,
:96,
:97,
:98,
:99,
:100,
:101,
:102,
:103,
:104,
:105,
:106,
:107,
:108,
:109,
:110,
:111,
:112,
:113,
:114,
:115,
:116,
:117,
:118,
:119,
:120,
:121,
:122,
:123,
:124,
:125,
:126,
:127,
:128,
:129,
:130,
:131,
:132,
:133,
:134,
:135,
:136,
:137,
:138,
:139,
:140,
:141,
:142,
:143,
:144,
:145,
:146,
:147,
:148,
:149,
:150,
:151,
:152,
:153,
:154,
:155,
:156,
:157,
:158,
:159,
:160,
:161,
:162,
:163,
:164,
:165,
:166,
:167,
:168,
:169,
:170,
:171,
:172,
:173,
:174,
:175,
:176,
:177,
:178,
:179,
:180,
:181,
:182,
:183,
:184,
:185,
:186,
:187,
:188,
:189,
:190,
:191,
:192,
:193,
:194,
:195,
:196,
:197,
:198,
:199,
:200,
:201,
:202,
:203,
:204,
:205,
:206,
:207,
:208,
:209,
:210,
:211,
:212,
:213,
:214,
:215,
:216,
:217,
:218,
:219,
:220,
:221,
:222,
:223,
:224,
:225,
:226,
:227,
:228,
:229,
:230,
:231,
:232,
:233,
:234,
:235,
:236,
:237,
:238,
:239,
:240,
:241,
:242,
:243,
:244,
:245,
:246,
:247,
:248,
:249,
:250,
:251,
:252,
:253,
:254,
:255,
:256,
:257,
:258,
:259,
:260,
:261,
:262,
:263,
:264,
:265,
:266,
:267,
:268,
:269,
:270,
:271,
:272,
:273,
:274,
:275,
:276,
:277,
:278,
:279,
:280,
:281,
:282,
:283,
:284,
:285,
:286,
:287,
:288,
:289,
:290,
:291,
:292,
:293,
:294,
:295,
:296,
:297,
:298,
:299,
:300,
:301,
:302,
:303,
:304,
:305,
:306,
:307,
:308,
:309,
:310,
:311,
:312,
:313,
:314,
:315,
:316,
:317,
:318,
:319,
:320,
:321,
:322,
:323,
:324,
:325,
:326,
:327,
:328,
:329,
:330,
:331,
:332,
:333,
:334,
:335,
:336,
:337,
:338,
:339,
:340,
:341,
:342,
:343,
:344,
:345,
:346,
:347,
:348,
:349,
:350,
:351,
:352,
:353,
:354,
:355,
:356,
:357,
:358,
:359,
:360,
:361,
:362,
:363,
:364,
:365,
:366,
:367,
:368,
:369,
:370,
:371,
:372,
:373,
:374,
:375,
:376,
:377,
:378,
:379,
:380,
:381,
:382,
:383,
:384,
:385,
:386,
:387,
:388,
:389,
:390,
:391,
:392,
:393,
:394,
:395,
:396,
:397,
:398,
:399,
:400,
:401,
:402,
:403,
:404,
:405,
:406,
:407,
:408,
:409,
:410,
:411,
:412,
:413,
:414,
:415,
:416,
:417,
:418,
:419,
:420,
:421,
:422,
:423,
:424,
:425,
:426,
:427,
:428,
:429,
:430,
:431,
:432,
:433,
:434,
:435,
:436,
:437,
:438,
:439,
:440,
:441,
:442,
:443,
:444,
:445,
:446,
:447,
:448,
:449,
:450,
:451,
:452,
:453,
:454,
:455,
:456,
:457,
:458,
:459,
:460,
:461,
:462,
:463,
:464,
:465,
:466,
:467,
:468,
:469,
:470,
:471,
:472,
:473,
:474,
:475,
:476,
:477,
:478,
:479,
:480,
:481,
:482,
:483,
:484,
:485,
:486,
:487,
:488,
:489,
:490,
:491,
:492,
:493,
:494,
:495,
:496,
:497,
:498,
:499,
:500,
:501,
:502,
:503,
:504,
:505,
:506,
:507,
:508,
:509,
:510,
:511,
:512,
:513,
:514,
:515,
:516,
:517,
:518,
:519,
:520,
:521,
:522,
:523,
:524,
:525,
:526,
:527,
:528,
:529,
:530,
:531,
:532,
:533,
:534,
:535,
:536,
:537,
:538,
:539,
:540,
:541,
:542,
:543,
:544,
:545,
:546,
:547,
:548,
:549,
:550,
:551,
:552,
:553,
:554,
:555,
:556,
:557,
:558,
:559,
:560,
:561,
:562,
:563,
:564,
:565,
:566,
:567,
:568,
:569,
:570,
:571,
:572,
:573,
:574,
:575,
:576,
:577,
:578,
:579,
:580,
:581,
:582,
:583,
:584,
:585,
:586,
:587,
:588,
:589,
:590,
:591,
:592,
:593,
:594,
:595,
:596,
:597,
:598,
:599,
:600,
:601,
:602,
:603,
:604,
:605,
:606,
:607,
:608,
:609,
:610,
:611,
:612,
:613,
:614,
:615,
:616,
:617,
:618,
:619,
:620,
:621,
:622,
:623,
:624,
:625,
:626,
:627,
:628,
:629,
:630,
:631,
:632,
:633,
:634,
:635,
:636,
:637,
:638,
:639,
:640,
:641,
:642,
:643,
:644,
:645,
:646,
:647,
:648,
:649,
:650,
:651,
:652,
:653,
:654,
:655,
:656,
:657,
:658,
:659,
:660,
:661,
:662,
:663,
:664,
:665,
:666,
:667,
:668,
:669,
:670,
:671,
:672,
:673,
:674,
:675,
:676,
:677,
:678,
:679,
:680,
:681,
:682,
:683,
:684,
:685,
:686,
:687,
:688,
:689,
:690,
:691,
:692,
:693,
:694,
:695,
:696,
:697,
:698,
:699,
:700,
:701,
:702,
:703,
:704,
:705,
:706,
:707,
:708,
:709,
:710,
:711,
:712,
:713,
:714,
:715,
:716,
:717,
:718,
:719,
:720,
:721,
:722,
:723,
:724,
:725,
:726,
:727,
:728,
:729,
:730,
:731,
:732,
:733,
:734,
:735,
:736,
:737,
:738,
:739,
:740,
:741,
:742,
:743,
:744,
:745,
:746,
:747,
:748,
:749,
:750,
:751,
:752,
:753,
:754,
:755,
:756,
:757,
:758,
:759,
:760,
:761,
:762,
:763,
:764,
:765,
:766,
:767,
:768,
:769,
:770,
:771,
:772,
:773,
:774,
:775,
:776,
:777,
:778,
:779,
:780,
:781,
:782,
:783,
:784,
:785,
:786,
:787,
:788,
:789,
:790,
:791,
:792,
:793,
:794,
:795,
:796,
:797,
:798,
:799,
:800,
:801,
:802,
:803,
:804,
:805,
:806,
:807,
:808,
:809,
:810,
:811,
:812,
:813,
:814,
:815,
:816,
:817,
:818,
:819,
:820,
:821,
:822,
:823,
:824,
:825,
:826,
:827,
:828,
:829,
:830,
:831,
:832,
:833,
:834,
:835,
:836,
:837,
:838,
:839,
:840,
:841,
:842,
:843,
:844,
:845,
:846,
:847,
:848,
:849,
:850,
:851,
:852,
:853,
:854,
:855,
:856,
:857,
:858,
:859,
:860,
:861,
:862,
:863,
:864,
:865,
:866,
:867,
:868,
:869,
:870,
:871,
:872,
:873,
:874,
:875,
:876,
:877,
:878,
:879,
:880,
:881,
:882,
:883,
:884,
:885,
:886,
:887,
:888,
:889,
:890,
:891,
:892,
:893,
:894,
:895,
:896,
:897,
:898,
:899,
:900,
:901,
:902,
:903,
:904,
:905,
:906,
:907,
:908,
:909,
:910,
:911,
:912,
:913,
:914,
:915,
:916,
:917,
:918,
:919,
:920,
:921,
:922,
:923,
:924,
:925,
:926,
:927,
:928,
:929,
:930,
:931,
:932,
:933,
:934,
:935,
:936,
:937,
:938,
:939,
:940,
:941,
:942,
:943,
:944,
:945,
:946,
:947,
:948,
:949,
:950,
:951,
:952,
:953,
:954,
:955,
:956,
:957,
:958,
:959,
:960,
:961,
:962,
:963,
:964,
:965,
:966,
:967,
:968,
:969,
:970,
:971,
:972,
:973,
:974,
:975,
:976,
:977,
:978,
:979,
:980,
:981,
:982,
:983,
:984,
:985,
:986,
:987,
:988,
:989,
:990,
:991,
:992,
:993,
:994,
:995,
:996,
:997,
:998,
:999,
:1000,
:1001)
AND CPB_A.FLAG = 'N'

Oracle 自动转化 : 把where 和join 放在一起
