SQL优化 where谓词条件OR优化

1.测试表,及测试语句where条件中OR对应两个字段选择度很高

create table t618 as select * from dba_objects;

select object_name from t618 where (object_id=12043 or DATA_OBJECT_ID=12043) and STATUS='VALID';

2.没有索引情况下,全表扫描逻辑读1238。

3.OR其中一列创建索引,无法使用索引,全表扫描。

SYS@db11g> create index idx_t618_01 on t618(object_id) online;

Index created.

4.OR对应两列同时创建索引,可以使用到两个索引,并CONCATENATION,逻辑读降为7。

SYS@db11g> create index idx_t618_02 on t618(DATA_OBJECT_ID) online;

Index created.

相关推荐
IT成长日记9 分钟前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
ldj202012 分钟前
Jenkins 构建过程常见错误
运维·jenkins
萧曵 丶17 分钟前
Spring @TransactionalEventListener
java·数据库·spring·事务·transactional·异步
坤坤不爱吃鱼20 分钟前
【MySQL\Oracle\PostgreSQL】迁移到openGauss数据出现的问题解决方案
mysql·postgresql·oracle
胡斌附体21 分钟前
mobaxterm终端sqlplus乱码问题解决
数据库·乱码·sqlplus·字符集设置
ladymorgana23 分钟前
【Docker】如何设置 `wiredTigerCacheSizeGB` 和 `resources.limits.memory`
运维·docker·容器
moon66sun30 分钟前
开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
数据库·esb
TDengine (老段)1 小时前
使用 StatsD 向 TDengine 写入
java·大数据·数据库·时序数据库·iot·tdengine·涛思数据
DarkAthena1 小时前
【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
数据库·gaussdb
Gauss松鼠会1 小时前
GaussDB权限管理:从RBAC到精细化控制的企业级安全实践
大数据·数据库·安全·database·gaussdb