技术开发 频道

全文索引性能分析(三)

  【IT168 技术文档】测试环境仍然沿用上一篇文章介绍的。下面看一下这个查询语句:

SQL> SELECT * FROM T 2 WHERE CONTAINS(NAME, 'SYS') > 0 3 AND STATUS = 'INVALID'; ID NAME CREATED TYPE STATUS ---------- ------------------------------ ---------- ------------------ ------- 5942 SYS ALL_REPPARAMETER_COLUMN 2005-09-21 VIEW INVALID 6319 SYS DBA_LOGSTDBY_LOG 2005-09-21 VIEW INVALID . . . 10332 SYS _ALL_REPRESOLUTION 2005-09-21 VIEW INVALID

  已选择19行。

  执行计划

---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=28 Card=7103 Bytes=397768) 1 0 TABLE ACCESS (FULL) OF 'T' (Cost=28 Card=7103 Bytes=397768)

  统计信息

---------------------------------------------------------- 57 recursive calls 0 db block gets 373 consistent gets 0 physical reads 0 redo size 1471 bytes sent via SQL*Net to client 375 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 19 rows processed

  由于包含SYS的记录太多,因此Oracle没有选择全文索引,但是Oracle为什么没有使用BITMAP索引呢,这主要是由于确实列的直方图分析。

SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, 'T', METHOD_OPT
=> 'FOR ALL INDEXED COLUMNS SIZE 254')

  PL/SQL 过程已成功完成。

SQL> SELECT * FROM T 2 WHERE CONTAINS(NAME, 'SYS') > 0 3 AND STATUS = 'INVALID'; ID NAME CREATED TYPE STATUS ---------- ------------------------------ ---------- ------------------ ------- 5942 SYS ALL_REPPARAMETER_COLUMN 2005-09-21 VIEW INVALID 6319 SYS DBA_LOGSTDBY_LOG 2005-09-21 VIEW INVALID . . . 10332 SYS _ALL_REPRESOLUTION 2005-09-21 VIEW INVALID

  已选择19行。

  执行计划

---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=10 Card=19 Bytes=1064) 1 0 TABLE ACCESS (BY INDEX ROWID) OF 'T' (Cost=10 Card=19 Bytes=1064) 2 1 BITMAP CONVERSION (TO ROWIDS) 3 2 BITMAP INDEX (SINGLE VALUE) OF 'IND_B_T_STATUS'

  统计信息

---------------------------------------------------------- 57 recursive calls 0 db block gets 117 consistent gets 0 physical reads 0 redo size 1471 bytes sent via SQL*Net to client 375 bytes received via SQL*Net from client 3 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 19 rows processed

  收集了列的直方图信息,Oracle采用了BITMAP索引,使得查询效率提到。

 

0
相关文章