1。 SQL语句;2。 Explain ; 3。 优化
[@more@]1。 SQL语句
SELECT c.uuid , c.c_name
FROM gsims.b_contract c, gsims.b_unitmessage b
WHERE c.c_codeid = b.uuid
AND TO_CHAR (C.D_DATE_INK, 'yyyymmdd') BETWEEN '20101020' AND '20101120'
AND b.unitcode = '008542496-1';
注:这是一个例子,不代表实际意义。
但是通过这个例子,基本理清楚了SQL 语句优化的步骤方法。
2。 Explain SQL
(1). 优化
(2). 执行计划
先说执行计划。执行计划,SQL的执行路径。
优化,就是告诉SQL怎么走最快的路径。
| Plan | |||
|---|---|---|---|
| SELECT STATEMENT ALL_ROWS Cost : 10 Bytes : 53 Cardinality : 1 | |||
| 5 NESTED LOOPS Cost : 10 Bytes : 53 Cardinality : 1 | |||
| 2 TABLE ACCESS BY INDEX ROWID GSIMS.B_UNITMESSAGE Cost : 0 Bytes : 17 Cardinality : 1 | |||
| 1 INDEX UNIQUE SCAN GSIMS.IDX_UNITCODE "B"."UNITCODE"='008542496-1' Cost : 0 Cardinality : 1 | |||
| 4 TABLE ACCESS BY INDEX ROWID GSIMS.B_CONTRACT TO_CHAR(INTERNAL_FUNCTION("C"."D_DATE_INK"),'yyyymmdd')>='20101020' AND TO_CHAR(INTERNAL_FUNCTION("C"."D_DATE_INK"),'yyyymmdd')<='20101120' Cost : 10 Bytes : 36 Cardinality : 1 | |||
| 3 INDEX RANGE SCAN GSIMS.INDEX_CONTRACT_UNITUUID "C"."C_CODEID"="B"."UUID" Cost : 2 Cardinality : 20 | |||
3。 优化
优化需要改变下思路。
传统的SQL写法,是面向结果的。
优化者换个思路看SQL。对于优化的人来说,SQL是面向过程、
面向集合的。
所谓的优化一定是针对具体业务的,纯粹为优化而优化,效果
不一定好到哪里去。
改变下上面语句的执行路径,但是不一定是最优化的例子。
SQL:
SELECT /*+ordered*/ c.uuid , c.c_name
FROM gsims.b_contract c, gsims.b_unitmessage b
WHERE c.c_codeid = b.uuid
AND TO_CHAR (C.D_DATE_INK, 'yyyymmdd') BETWEEN '20101020' AND '20101120'
AND b.unitcode = '008542496-1';
Explain :
| Plan | |||
|---|---|---|---|
| SELECT STATEMENT ALL_ROWS Cost : 3,455 Bytes : 53 Cardinality : 1 | |||
| 4 NESTED LOOPS Cost : 3,455 Bytes : 53 Cardinality : 1 | |||
| 1 TABLE ACCESS FULL GSIMS.B_CONTRACT TO_CHAR(INTERNAL_FUNCTION("C"."D_DATE_INK"),'yyyymmdd')>='20101020' AND TO_CHAR(INTERNAL_FUNCTION("C"."D_DATE_INK"),'yyyymmdd')<='20101120' Cost : 3,454 Bytes : 73,044 Cardinality : 2,029 | |||
| 3 TABLE ACCESS BY INDEX ROWID GSIMS.B_UNITMESSAGE "C"."C_CODEID"="B"."UUID" Cost : 0 Bytes : 17 Cardinality : 1 | |||
| 2 INDEX UNIQUE SCAN GSIMS.IDX_UNITCODE "B"."UNITCODE"='008542496-1' Cost : 0 Cardinality : 1 | |||
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/24617594/viewspace-1043400/ ,如需转载,请注明出处,否则将追究法律责任。