组函数会忽略null值

SQL> select distinct id from abc;

ID


1

2

4

SQL> select count( distinct id ) from abc;

COUNT(DISTINCTID)


3

SQL> select count(id) from abc;

COUNT(ID)


3

SQL> select count(*) from abc;

COUNT(*)


5

SQL> select *from abc;

ID NAME


1 asdf

2 sdfa

sdfa

4 fdas

asdf

SQL>

hint被忽略

如果CBO认为使用hint会导致错误的结果时,hint将被忽略,详见下例SQL> select /*+ index(t t_ind) */ count(*) from t;

Execution Plan


Plan hash value: 2966233522


| Id | Operation | Name | Rows | Cost (%CPU)| Time |


| 0 | SELECT STATEMENT | | 1 | 57 (2)| 00:00:01 |

| 1 | SORT AGGREGATE | | 1 | | |

| 2 | TABLE ACCESS FULL| T | 50366 | 57 (2)| 00:00:01 |


因为我们是对记录求总数,且我们并没有在建立索引时指定不能为空,索引如果CBO选择在索引上进行count时,但索引字段上的值为空时,结果将不准确,故CBO没有选择索引。 SQL> select /*+ index(t t_ind) */ count(id) from t;

Execution Plan


Plan hash value: 646498162


| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |


| 0 | SELECT STATEMENT | | 1 | 5 | 285 (1)| 00:00:04 |

| 1 | SORT AGGREGATE | | 1 | 5 | | |

| 2 | INDEX FULL SCAN| T_IND | 50366 | 245K| 285 (1)| 00:00:04 |


因为我们只对id进行count,这个动作相当于count索引上的所有id值,这个操作和对表上的id字段进行count是一样的(组函数会忽略null值)

/*+ INDEX_JOIN(TABLE INDEX_NAME1 INDEX_NAME2) */

当谓词中引用的列都有索引的时候,可以通过指定采用索引关联的方式,来访问数据select /*+ index_join(t t_ind t_bm) */ id from t where id=100 and object_name='EMPLOYEES'

/*+ no_use_nl(table_1,table_2) */在多表关联查询中,指定不使用nest loops方式进行多表关联。

select /*+ no_use_nl(t,t1) */ t.* from t,t1 where t.id=t1.id;

/*+ no_use_hash(table_1,table_2) */在多表关联查询中,指定不使用hash join方式进行多表关联。

select /*+ no_use_hash(t,t1) */ t.* from t,t1 where t.id=t1.id;

/*+ no_use_merge(table_1,table_2) */在多表关联查询中,指定不使用merge join方式进行多表关联。

select /*+ no_use_merge(t,t1) */ t.* from t,t1 where t.id=t1.id;

/*+ dynamic_sampling(table_name n) */

设置sql执行时动态采用的级别,这个级别为0~10select /*+ dynamic_sampling(t 4) */ * from t where id > 1234

NL_AJ

Use an anti-join in a sub-query. (depricated in Oracle 10g)

相关推荐
小羊没烦恼!4 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里4 天前
java中的继承和多态的区别
java
小羊没烦恼!4 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕4 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码4 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖4 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时4 天前
01-06-A-JVM排查实战详解
java·jvm
这个DBA有点耶4 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang4 天前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
DBA_G4 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库