首页 > 解决方案 > 查询执行在位图索引中需要更多时间

问题描述

我的表有 100 万条记录。我只想从表中获取非活动用户。查询执行时间超过 10 分钟。即使我使用的是索引。STATUS 只有两个值 Y 或 N。所以我为该列创建了位图索引。

EXPLAIN PLAN FOR
SELECT CUSTOMER NAME,MOBILE NUMBER,ACCOUNT NUMBER,CUSTOMER ID,REGISTARTION DATE from REGISTRATION where STATUS='N';

Plan hash value: 2615581521

---------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name                      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |                           |   960K|    66M|  9880   (1)| 00:01:59 |       |       |
|   1 |  PARTITION RANGE ALL                |                           |   960K|    66M|  9880   (1)| 00:01:59 |     1 |1048575|
|   2 |   PARTITION HASH ALL                |                           |   960K|    66M|  9880   (1)| 00:01:59 |     1 |     4 |
|   3 |    TABLE ACCESS BY LOCAL INDEX ROWID| REGISTRATION              |   960K|    66M|  9880   (1)| 00:01:59 |     1 |1048575|
|   4 |     BITMAP CONVERSION TO ROWIDS     |                           |       |       |            |          |       |       |
|*  5 |      BITMAP INDEX SINGLE VALUE      | IDX_REGISTRATION_7        |       |       |            |          |     1 |1048575|
---------------------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - access("STATUS"='N')

Note
-----
   - dynamic sampling used for this statement (level=11)
-----------------------------------------------------------------------------------------------------------------------------------------------------

如何提高上述查询的性能?

标签: sqloracleperformance

解决方案


推荐阅读