当前位置: 代码迷 >> Java Web开发 >> SQL语句优化,该怎么解决
  详细解决方案

SQL语句优化,该怎么解决

热度:102   发布时间:2016-04-17 01:04:26.0
SQL语句优化
各位 请问下 这个SQL怎么写啊
select top 20 * from test where name like ? or info like ?
而且问号个数是随用户输入的关键词个数变化的
比如用户输入 jack lisa
select top 20 * from test where name like '%jack%' or info like '%jack%' or name '%lisa%' or info like '%lisa%'
用户输入 三个关键词 就变成三组 name 和info

------解决方案--------------------
加全文索引吧。
http://www.soft6.com/tech/16/163677.html
------解决方案--------------------
楼主,like的核心问题是,如果你用 %xxoo% 就没法使用常规索引。

所以基本上只有两种套路:
1、Like仅适用 xxoo%,那么这样仍然可以使用常规索引;
2、使用全文索引,Oracle自身是支持的,安装配套的组件包就行了;不过索引空间会很大。
------解决方案--------------------
探讨

楼主,like的核心问题是,如果你用 %xxoo% 就没法使用常规索引。

所以基本上只有两种套路:
1、Like仅适用 xxoo%,那么这样仍然可以使用常规索引;
2、使用全文索引,Oracle自身是支持的,安装配套的组件包就行了;不过索引空间会很大。

------解决方案--------------------
探讨

引用:
SQLServer 的全文索引比Oracle容易使用多了,我2000年的时候用过就这么觉得,不过现在全忘了。

使用全文索引时 %XX% 和XX%有区别的吗

------解决方案--------------------
探讨
使用全文索引时 %XX% 和XX%有区别的吗

------解决方案--------------------
会加索引不?加上,就行了,可提高效率的
------解决方案--------------------
非常喜欢全文索引;sql server用全文索引最简单;手动创建;so easy
------解决方案--------------------
SQL Server 的全文检索,通配符似乎应该是 * 而不是 %
SELECT * FROM categories 
WHERE CONTAINS(description, '"sea*" or "bread*"') 

多关键字用另一个函数:
SELECT * FROM categories 
WHERE FREETEXT (Description, 'sweetest candy bread and dry meat' )
  相关解决方案