Oracle中利用直方图提升查询性能(oracle直方图)
随着电子化信息的深入,存储的数据量与查找的数据的量越来越大,如何让查找的数据不被冗余而快速地获取,这就要求我们必须让数据库的挖掘技术越来越精确,提高查询的效率。Oracle的性能优化,旨在发现性能瓶颈,通过对数据库中的各种类型信息进行深入地分析和审计,为数据库优化和调优提供支持,从而提高数据库查询和更新操作的速度。其中,最常用的优化工具就是Oracle的直方图,它是分布式数据字典中提供的性能优化的有效方法,可以有效地提升数据库的查询性能。
首先,在利用Oracle的直方图来提升查询性能之前,首先需要在Oracle中创建一个直方图单元;
CREATE TABLE bu_history_tab
(id NUMBER(10) NOT NULL,
history VARCHAR2(100),
CONSTRAINT PK_bu_history_tab PRIMARY KEY (id));
/* 创建直方图 */
EXEC DBMS_STATS.CREATE_EXTENDED_STATS(ownname=>’TABLE_OWNER’,
tabname=>’TBNAME’,
extname=>’HISTOGRAM’);
然后需要对创建的直方图信息进行采集,首先收集hr_history表的统计信息,
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>’TABLE_OWNER’,
tabname=>’TBNAME’);
最后,使用直方图完成性能优化,当Oracle执行查询时,将会用到直方图单元中的统计信息,可以做出更准确的估算,从而提高查询效率:
SELECT /*+ opt_param(‘_histogram_enabled’,’TRUE’)*/
hr_emp_id,
hr_history
FROM hr_history
WHERE hr_emp_id=12
Oracle的直方图可以有效的实现对Rank函数,从而改进Oracle的性能优化,进而提高Oracle数据库查询性能。