sql – 添加索引后查询的机能降落
我有一个查询SP的哪一部门按期执行,查询必要一段时刻才气执行,以是我抉择查察它.我对查询举办了自动跟踪,并返回 this was the execution打算[因为尺寸过大而粘贴在pastebin中] 我在正在举办全表会见的表上添加了索引,并运行了查询.尽量有cost being significantly lower,但查询机能比早年更差. 为什么会这样,任何人都可以对此有所相识吗? 该数据库是Oracle 10gR2(版本10.2.0.1.0). 这是正在运行的查询 SELECT DISTINCT CAC_FLEX_03,CAC_FLEX_04 FROM PCOM_CUST_PRACTICE_INFO A,PGIM_ZIP_CODES C,PGIM_PROD_TARIFF_DATA B,PCOM_CODES_APPL_CODES D WHERE A.PCPI_CUST_CODE IN ('002023','002025') AND C.ZC_ZIP_CODE = A.PCPI_PIN_CODE AND C.ZC_CITY_CODE = A.PCPI_CITY AND C.ZC_COUNTY_CODE = A.PCPI_COUNTY AND C.ZC_STATE_CODE = A.PCPI_STATE AND B.PTD_CVR_CODE = 'TF-001' AND B.PTD_VALUE_SET2 = A.PCPI_STATE AND B.PTD_VALUE_SET4 = A.PCPI_COUNTY AND B.PTD_VALUE_SET5 = D.CAC_FLEX_03 AND D.CAC_FLEX_04 IS NOT NULL AND ZC_STATE_CODE = (SELECT POL_FLEX_04 FROM PGIT_POLICY WHERE POL_SYS_ID = 541332) AND B.PTD_VALUE_SET3 = (SELECT POL_FLEX_01 FROM PGIT_POLICY WHERE POL_SYS_ID = 541332) AND CAC_TYPE = 'TERR-CODE' AND CAC_FLEX_03 = 0; 办理要领一些对象:起首,假如要会见高出一半的数据块,则完全扫描会更快,由于读取索引块是另一个IO挪用,因此读取索引行的时刻凡是是读取持续行的两倍. 其次,无论是否有索引,您都必要查察您的打算.这里将提供信息,让您知道改变了什么.假如你看到“Merge Join Cartesian”,那么筹划师就会堕落.谁人打算永久不会好.完全扫描的内部轮回具有沟通的IO本钱,但占用的内存和姑且空间更少. 第三,你行使ANALYZE TABLE构建了统计数据.别.乃至甲骨文也暗示它很糟糕并且很糟糕.行使dbms_stats包来构建统计数据,您将得到更精确的统计数据.假如它如故是奇数,请变动样本巨细,或执行完备统计而不是预计. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |