hc学习平台

 找回密码
 立即注册
搜索
热搜: 活动 交友 javakc
 › 学习交流 › Oracle › 如何优化如下like语句
查看: 1920|回复: 9
打印 上一主题 下一主题

如何优化如下like语句

[复制链接]

2249

主题

0

帖子

0

博客

admin

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

跳转到指定楼层
楼主
发表于2015-01-23 15:55:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like '%javakc%'

0

主题

1104

帖子

2

博客

桃子++

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-08-25 18:56:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select * from tbl where id=(select id from tbl where instr(name,'javakc')>0)

让SQL语句可序列化,换一种判断方式即可

0

主题

856

帖子

2

博客

bnlnk

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-08-31 19:52:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select *
   from tbl
       where name like '%javakc%';

0

主题

1700

帖子

0

博客

song

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 15:58:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

尽量不要使用 like‘%……%’

对于like‘……%’,oracle可以应用colunm上的index

对于like‘%……’的 可以利用reverse+function index的形式



WR

0

主题

1674

帖子

0

博客

WR

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 10:10:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select *from tbl where name YY_BHLIKE '%JAVAKC%'

沙发
发表于2016-09-07 14:47:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
优化sql语句应尽量避免使用*,所以把*替换成想要查询的列

0

主题

1518

帖子

0

博客

Cracia

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 13:33:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

 ("p"."newname" is nukk and instr("p"."names",'javakc')>0);

create index ide_t on tbl(instr(names,'javakc'),newname);

0

主题

1636

帖子

0

博客

renmihe

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-08 14:00:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

尽量不要使用 like‘%……%’

对于like‘……%’,oracle可以应用colunm上的index

对于like‘%……’的 可以利用reverse+function index的形式

like "%_" 百分号在前时,停用了索引

0

主题

1576

帖子

0

博客

liufangyuan

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 18:39:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

查询语句中尽量避免用*号,不必要的数据不要进行查询,会降低效率

查询需要的数据即可,例如:

select name from tbl where name like '%javakc%'

0

主题

1402

帖子

0

博客

马鹏磊

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 18:09:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一般含有like的sql一下3种情况:

1.%在尾,类似like 'abc%',这种在查询列创建一般索引。

2.%在头,类似like '%abc',这种情况查询利用反向索引和反向函数

3.%在头和尾,类似 like '% abc %',这种情况利用instr函数和函数索引


尽量不要使用 like‘%……%’

对于like‘……%’,oracle可以应用colunm上的index

对于like‘%……’的 可以利用reverse+function index的形式

0

主题

1510

帖子

0

博客

zhangjialong

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 17:07:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一般含有like的sql一下3种情况:

1.%在尾,类似like 'abc%',这种在查询列创建一般索引。

2.%在头,类似like '%abc',这种情况查询利用反向索引和反向函数

3.%在头和尾,类似 like '% abc %',这种情况利用instr函数和函数索引


尽量不要使用 like‘%……%’

对于like‘……%’,oracle可以应用colunm上的index

对于like‘%……’的 可以利用reverse+function index的形式

0

主题

1451

帖子

0

博客

gaoye

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 17:34:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like '%javakc%'

0

主题

529

帖子

0

博客

刘瑞

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 18:20:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

0

主题

1450

帖子

0

博客

Sarbr

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-07 18:26:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

select name n from tbl where  n like '%javakc%'
CH

0

主题

342

帖子

0

博客

CH

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-09 10:55:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like 'javakc%'

0

主题

300

帖子

0

博客

505773371

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-20 17:39:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from  where name like 'javakc'
XY

0

主题

587

帖子

0

博客

XY

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2016-09-19 17:24:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like 'javakc%'
zjx

0

主题

176

帖子

2

博客

zjx

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-03-31 19:47:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like  'ja%'

0

主题

281

帖子

9

博客

love

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-05-04 15:16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

先拆表,把大表拆成小表  create table tab2 as (select id,name from tab1) ;

 from tab1 t1 , tab2 t2

 where t1.id=t2.id

 and t2.name like '%javakc%';

能否提高数据的查询效率,还要根据数据量去做测试

0

主题

1902

帖子

0

博客

王之神判

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-17 17:26:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可以用 Turbo Boyer-Moore 算法来初始化模式,并且利用这个模式来加快搜索。

0

主题

1932

帖子

0

博客

740317431

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-17 17:56:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
可以用 Turbo Boyer-Moore 算法来初始化模式,并且利用这个模式来加快搜索。

0

主题

1694

帖子

0

博客

wulinan

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-21 08:30:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where lower( name) like '%javakc%'
zxx

0

主题

1135

帖子

0

博客

zxx

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-08-27 16:27:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

利用instr函数+函数索引

0

主题

312

帖子

0

博客

梧桐灯

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-09-16 15:10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where instr(name,'javakc')>0

0

主题

435

帖子

0

博客

雒鑫鑫

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2017-09-22 20:34:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where name like '%javakc%'

0

主题

1213

帖子

0

博客

yanghao

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2018-09-01 16:57:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
删了

0

主题

62

帖子

0

博客

流苏天

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2018-11-04 17:25:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
select * from tbl where instr(name, 'javakc')>0

0

主题

298

帖子

0

博客

moon110

Rank: 9 Rank: 9 Rank: 9

积分

IP 编辑 禁止 帖子 清理

沙发
发表于2019-07-30 09:05:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1.%在尾,在查询列创建一般索引

2.%在头,在查询列创建反向索引和反向函数

3.%在头和尾,使用instr函数和函数索引

不推荐使用第三种,

优化

    select * from tbl where id=(select id from tbl where instr(name,'javakc')>0)



站点统计|举报|Archiver|手机版|小黑屋|Comsenz Inc.

GMT+8, , Processed in 0.195171 second(s), 9 queries .

Powered by javakc! X1.0

© 2004-2014 javakc

f1208.com 备案号:京ICP备14030918号-1

返回顶部