+ -
当前位置:首页 → 问答吧 → oracle优化

oracle优化

时间:2009-05-05

来源:互联网

select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢

作者: anergl   发布时间: 2009-05-05

引用楼主 anergl 的帖子:
select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢

如果instr(name,'中信广场')>0中的中信广场是一个固定值,你可以在POI表上建立一个函数索引

作者: yf520gn   发布时间: 2009-05-05

引用 1 楼 yf520gn 的回复:
引用楼主 anergl 的帖子:
select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢

如果instr(name,'中信广场')>0中的中信广场是一个固定值,你可以在POI表上建立一个函数索引

呵呵。不是固定的

作者: anergl   发布时间: 2009-05-05

引用楼主 anergl 的帖子:
select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢

当数据量很大的时候,在操作符的左边最好不要用函数。如果你的数据表有100w条记录,那么你上面那个instr函数就会运行100w次,性能不可能好的。

你不妨考虑使用全文索引,看看是否能解决你的问题:
http://blog.csdn.net/pathuang68/archive/2009/04/20/4093665.aspx

作者: pathuang68   发布时间: 2009-05-05

全文索引的精确性不高。有什么方法在全文索引的基础上提高精确度呢?

作者: anergl   发布时间: 2009-05-05

select * from poi where name like '%中信广场%';

作者: ldw2545398   发布时间: 2009-05-05

引用楼主 anergl 的帖子:
select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢


建立全文索引,然后用如下sql语句:
select * from poi where name like '%中信广场%' 
 

作者: oraclelogan   发布时间: 2009-05-05

引用 6 楼 oraclelogan 的回复:
引用楼主 anergl 的帖子:

select * from poi where instr(name,'中信广场')>0;
请问上面的如何优化。谢谢


建立全文索引,然后用如下sql语句:
select * from poi where name like '%中信广场%'



顶下

作者: Adebayor   发布时间: 2009-05-05

mark

作者: j2eeoriented   发布时间: 2009-05-11

mark 学习

作者: lockingleo   发布时间: 2011-10-20

热门下载

更多