oracle hint用索引,oracle数据库使用hint来让模糊查询走索引

在没有创建数据直方图之前,查询优化器是cbo,可能不会选择代价最低(效率最高)的方式查询.

先创建表

--日语假名表

CREATE TABLE JAPANESE_SOUNDMARK

(

ID INTEGER PRIMARY KEY,

ROMAJI VARCHAR2(10),

PHONETIC_SYMBOL VARCHAR(20)

);

创建序列

--创建自增长的序列,用于主键

CREATE SEQUENCE SEQ_JAPANESE_SOUNDMARK

START WITH 1

NOMAXVALUE

INCREMENT BY 1

NOCYCLE

CACHE 10;

创建反向键索引

--给需要模糊查询的列加上反向键索引

CREATE INDEX ROMAJI_REVERSE_INDEX ON JAPANESE_SOUNDMARK(ROMAJI) REVERSE;

创建普通索引

--普通索引

CREATE INDEX PHONETIC_SYMBOL_INDEX ON JAPANESE_SOUNDMARK(PHONETIC_SYMBOL);

注意:

以上语句均为DDL(Data Definition Language)语句,会自动提交事务,如果之前有DML(Data Manipulation Language)语句运行了,但没提交事务,会将之前所有的DML语句也提交事务,ROLLBACK会失效.

1.没有索引时(实际上不需要测试)

--模糊查询,等值

EXPLAIN PLAN FOR

SELECT * FROM JAPANESE_SOUNDMARK

WHERE PHONETIC_SYMBOL LIKE 'A';

--查看执行计划

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

运行结果:

4d3f6d80d7754c167617dd1415a5f5b5.png

显而易见:全表扫描

这个其实不需要测试,因为没有索引只能走全表扫描,所以,like '%字符串'和like'字符串%'都是全表扫描.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值