没有Where条件下group by走索引

C:\Users\Administrator>sqlplus /nolog

 SQL*Plus: Release 11.1.0.7.0 - Production on 星期二 3月 23 21:42:27 2010

 Copyright (c) 1982, 2008, Oracle.  All rights reserved.

 SQL> conn /as sysdba
 已连接。
 SQL> create table t as select * from dba_objects;

 表已创建。

 SQL> insert into t select * from t;

 已创建59262行。

 SQL> /

 已创建118524行。

 SQL> /

 已创建237048行。

 SQL> /

 已创建474096行。

 SQL> /

 已创建948192行。

 SQL> commit;

 提交完成。

 SQL>  alter session set "_gby_hash_aggregation_enabled"=false;

 会话已更改。

 SQL> set autot on
 SQL> select owner,max(object_id) from t group by owner;

 OWNER                          MAX(OBJECT_ID)
 ------------------------------ --------------
 ACMS                                    59869
 DBSNMP                                  11991
 EXFSYS                                  53969
 XXXX                                    58952
 ORACLE_OCM                              11757
 OUTLN                                    5724
 PUBLIC                                  53918
 SYS                                     59884
 SYSTEM                                  12528
 TSMSYS                                   5185
 WMSYS                                   12520

 已选择11行。

 执行计划
 ----------------------------------------------------------
 Plan hash value: 1476560607

 ---------------------------------------------------------------------------
 | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
 ---------------------------------------------------------------------------
 |   0 | SELECT STATEMENT   |      |  1679K|    48M|  7805   (5)| 00:01:34 |
 |   1 |  SORT GROUP BY     |      |  1679K|    48M|  7805   (5)| 00:01:34 |
 |   2 |   TABLE ACCESS FULL| T    |  1679K|    48M|  7573   (2)| 00:01:31 |
 ---------------------------------------------------------------------------

 Note
 -----
    - dynamic sampling used for this statement

 统计信息
 ----------------------------------------------------------
           0  recursive calls
           0  db block gets
       27669  consistent gets
           0  physical reads
           0  redo size
         683  bytes sent via SQL*Net to client
         416  bytes received via SQL*Net from client
           2  SQL*Net roundtrips to/from client
           1  sorts (memory)
           0  sorts (disk)
          11  rows processed

 SQL> create index t_idx on t (owner,object_id);

 索引已创建。

 SQL> select owner,max(object_id) from t group by owner;

 OWNER                          MAX(OBJECT_ID)
 ------------------------------ --------------
 ACMS                                    59869
 DBSNMP                                  11991
 EXFSYS                                  53969
 XXXX                                    58952
 ORACLE_OCM                              11757
 OUTLN                                    5724
 PUBLIC                                  53918
 SYS                                     59884
 SYSTEM                                  12528
 TSMSYS                                   5185
 WMSYS                                   12520

 已选择11行。

 执行计划
 ----------------------------------------------------------
 Plan hash value: 1476560607

 ---------------------------------------------------------------------------
 | Id  | Operation          | Name | Rows  | Bytes | Cost (%CPU)| Time     |
 ---------------------------------------------------------------------------
 |   0 | SELECT STATEMENT   |      |  1679K|    48M|  7805   (5)| 00:01:34 |
 |   1 |  SORT GROUP BY     |      |  1679K|    48M|  7805   (5)| 00:01:34 |
 |   2 |   TABLE ACCESS FULL| T    |  1679K|    48M|  7573   (2)| 00:01:31 |
 ---------------------------------------------------------------------------

 Note
 -----
    - dynamic sampling used for this statement

 统计信息
 ----------------------------------------------------------
           5  recursive calls
           0  db block gets
       27739  consistent gets
          26  physical reads
           0  redo size
         683  bytes sent via SQL*Net to client
         416  bytes received via SQL*Net from client
           2  SQL*Net roundtrips to/from client
           1  sorts (memory)
           0  sorts (disk)
          11  rows processed

 SQL> alter table t modify owner not null;

 表已更改。

 SQL> select owner,max(object_id) from t group by owner;

 OWNER                          MAX(OBJECT_ID)
 ------------------------------ --------------
 ACMS                                    59869
 DBSNMP                                  11991
 EXFSYS                                  53969
 XXXX                                    58952
 ORACLE_OCM                              11757
 OUTLN                                    5724
 PUBLIC                                  53918
 SYS                                     59884
 SYSTEM                                  12528
 TSMSYS                                   5185
 WMSYS                                   12520

 已选择11行。

 执行计划
 ----------------------------------------------------------
 Plan hash value: 847563073

 -------------------------------------------------------------------------------
 | Id  | Operation             | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
 -------------------------------------------------------------------------------
 |   0 | SELECT STATEMENT      |       |  1679K|    48M|  1790  (16)| 00:00:22 |
 |   1 |  SORT GROUP BY        |       |  1679K|    48M|  1790  (16)| 00:00:22 |
 |   2 |   INDEX FAST FULL SCAN| T_IDX |  1679K|    48M|  1558   (3)| 00:00:19 |
 -------------------------------------------------------------------------------

 Note
 -----
    - dynamic sampling used for this statement

 统计信息
 ----------------------------------------------------------
         146  recursive calls
           0  db block gets
        5705  consistent gets
        5601  physical reads
           0  redo size
         683  bytes sent via SQL*Net to client
         416  bytes received via SQL*Net from client
           2  SQL*Net roundtrips to/from client
           5  sorts (memory)
           0  sorts (disk)
          11  rows processed

 SQL> alter table t modify owner null;

 表已更改。

 SQL> alter table t modify object_id not null;

 表已更改。

 SQL> select owner,max(object_id) from t group by owner;

 OWNER                          MAX(OBJECT_ID)
 ------------------------------ --------------
 ACMS                                    59869
 DBSNMP                                  11991
 EXFSYS                                  53969
 XXXX                                    58952
 ORACLE_OCM                              11757
 OUTLN                                    5724
 PUBLIC                                  53918
 SYS                                     59884
 SYSTEM                                  12528
 TSMSYS                                   5185
 WMSYS                                   12520

 已选择11行。

 执行计划
 ----------------------------------------------------------
 Plan hash value: 847563073

 -------------------------------------------------------------------------------
 | Id  | Operation             | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
 -------------------------------------------------------------------------------
 |   0 | SELECT STATEMENT      |       |  1679K|    48M|  1790  (16)| 00:00:22 |
 |   1 |  SORT GROUP BY        |       |  1679K|    48M|  1790  (16)| 00:00:22 |
 |   2 |   INDEX FAST FULL SCAN| T_IDX |  1679K|    48M|  1558   (3)| 00:00:19 |
 -------------------------------------------------------------------------------

 Note
 -----
    - dynamic sampling used for this statement

 统计信息
 ----------------------------------------------------------
         146  recursive calls
           0  db block gets
        5705  consistent gets
           0  physical reads
           0  redo size
         683  bytes sent via SQL*Net to client
         416  bytes received via SQL*Net from client
           2  SQL*Net roundtrips to/from client
           5  sorts (memory)
           0  sorts (disk)
          11  rows processed

 SQL> select * from v$version;

 BANNER
 --------------------------------------------------------------------------------

 Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
 PL/SQL Release 11.1.0.7.0 - Production
 CORE    11.1.0.7.0      Production
 TNS for 32-bit Windows: Version 11.1.0.7.0 - Production
 NLSRTL Version 11.1.0.7.0 - Production

转自《http://www.itpub.net/thread-1282845-1-1.html》

时间: 2024-11-07 20:16:44

没有Where条件下group by走索引的相关文章

sql查询未走索引问题分析之查询数据量过大

前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉及对象的对象数据量,段大小,行数量,where条件列,是否存在索引,列的选择读情况如何 4.总结,优化整改 1.找到sql_text,sql_id 094cmrxrahdy2 SELECT 8~10个列名称(由于设计用户信息,因此部分信息不再详细说明) FROM Prescription WHERE

MYSQL 索引类型、什么情况下用不上索引、什么情况下不推荐使用索引

mysql explain的使用: http://blog.csdn.net/kaka1121/article/details/53394426 索引类型 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytable表 代码如下: CREATE TABLE mytable(   ID INT NOT NULL,    username VARCHAR(16) NOT NULL  ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin. 在查找use

强制MySQL查询走索引和强制查询不缓存

有些情况下,表中创建了索引但是EXPLAIN的查看执行计划的时候发现并没有走索引.是因为优化器认为该语句不使用索引效率更好. 当然也可以强制走索引.类似: SELECT uid,uname FROM tab_name force index(ind_id); SELECT SQL_NO_CACHE uid,uname FROM tab_name ; 不走逻辑IO,走物理IO.

《Python CookBook2》 第四章 Python技巧 - 若列表中某元素存在则返回之 && 在无须共享引用的条件下创建列表的列表

若列表中某元素存在则返回之 任务: 你有一个列表L,还有一个索引号i,若i是有效索引时,返回L[i],若不是,则返回默认值v 解决方案: 列表支持双向索引,所以i可以为负数 >>> def list_get(L,i,v=None): if -len(L)<= i < len(L): return L[i] else: return v >>> list_get([1,2,3,4,5,6],3) 4 异常机制 >>> def list2_ge

以通配符(%)开始的like字符串,走索引

在对oracle的SQL优化过程中经常会遇到[like'%abc']破坏索引的问题,但是如果真有此类需求,该如何在不破坏索引的基础上进行查询呢. [sql] view plain copy [email protected]> select reverse('123') from dual; REVERSE('123') -------------------------------- 321 1 row selected. [email protected]> create table te

在不允许新建对象的条件下,将list中指定条件的值去除

package com.liujianwang.learning; import java.util.LinkedList; import java.util.List; public class ListTest { public static void main(String[] args) { /* * 在不允许新建对象的条件下,将list中指定条件的值去除. * 例如:移除list中值大于6的元素. */ //测试数据 List<Integer> list = new LinkedLi

阿里云发布vSphere虚拟机备份服务 ,网络带宽有限条件下依然能有效保护数据

在6月上旬举行的云栖大会上海峰会上,阿里云发布了vSphere虚拟机备份上云服务(HBR for vSphere),并已经在7月份开始邀测.利用混合云备份服务可以将虚拟机镜像备份上云,避免了传统备份方案复杂的软件部署,存储资源规划,异地备份保护等难点,客户在网络带宽有限的条件下依然能够有效地保护vSphere虚拟机数据. 常见虚拟机备份技术的挑战 传统常见的虚拟机备份方式是把虚机机当做单独的主机,在每台虚拟机上安装备份软件,然后备份到本地的存储,这种方案可以用在虚拟机数目不大的环境,当虚拟机规模

like模糊查询是否走索引

1.模糊查询,后通配 走索引 ,前通配 走全表 2.where条件用in或or 不会走索引 3.order by 排序时,如果碰到相同的值,则会随机进行排序,排序出来的结果集不是固定的.建议使用id序列进行排序(唯一的值).   原文地址:https://www.cnblogs.com/chenglangpofeng/p/10643387.html

oracle like模糊查询不能走索引?

这里要纠正一个网上很多教程说的模糊匹配不能走索引的说法,因为在看<收获,不止SQL优化>一书,里面举例说到了,并且自己也跟着例子实践了一下,确实like一些特殊情况也是可以走索引的 例子来自<收获,不止SQL优化>一书,实践准备: //建表,注意要非空数据 drop table t purge; create table t as select * from dba_objects where object_id is not null; select * from t; //更新