首页 新闻 会员 周边

sql语句的模糊查询

0
悬赏园豆:15 [已关闭问题] 关闭于 2012-09-29 10:27

一个表有三个字段id(int 主键 自增长) title(nvarchar(20)) content(text)里面有百万条数据,如何做能快速的查出title里面带有“的”的所有id,用sql语句也行,也可以借助外来工具,但是like语句不行,麻烦帮帮忙!园豆没有多少,是个心意啊!

待重逢的主页 待重逢 | 初学一级 | 园豆:10
提问于:2012-09-18 11:16
< >
分享
所有回答(7)
0

为什么Like 语句不行?查询时只要不显示content(text)字段的数据, 对Title 字段建索引,然后select ID from Table where Title like '%的%'应该可以成功,仅百万数据,完全可以承受.
如果不行,就对title 建全文索引 。

acepro | 园豆:1218 (小虾三级) | 2012-09-18 11:30

但是人家说这个不行啊

支持(0) 反对(0) 待重逢 | 园豆:10 (初学一级) | 2012-09-18 11:43

@待重逢: 那就固化查询结果数据
对表新增字段IsHaveDE  bit ,将Title有“的”记录更为为 1
update table

set IsHaveDE  =1

where PATINDEX( '%的%', Title )>0

然后直接使用 select ID from Table where IsHaveDE  =1查询数据。

如果这个是页面显示,可以采取分页的方式返回数据。

支持(0) 反对(0) acepro | 园豆:1218 (小虾三级) | 2012-09-18 11:59
0

第一次取前XXX条数据,点下一页或想看后面的数据时 你查询是给个区间,不已次把数据都检索出来

犀利兵 | 园豆:241 (菜鸟二级) | 2012-09-18 11:34

这样也行啊!

支持(0) 反对(0) 待重逢 | 园豆:10 (初学一级) | 2012-09-18 11:44
0

select id from table where title like '%的%',可以的

leerh | 园豆:207 (菜鸟二级) | 2012-09-18 13:05
3

使用charindex('的',Title)>0也可以,而且比LIKE的速度要快一些

select id from Table where charindex('的',Title)>0

KivenRo | 园豆:1734 (小虾三级) | 2012-09-18 13:08
0

学习楼上的写法了

轻狂の书生 | 园豆:1042 (小虾三级) | 2012-09-18 15:02
0

第一次取前XXX条数据,点下一页或想看后面的数据时 你查询是给个区间,不已次把数据都检索出来

大数据都是这样查询的

jason2013 | 园豆:1998 (小虾三级) | 2012-09-18 16:06
0

text字段类型已很大限制,建议采取“全文检索”

RDIFramework.NET | 园豆:316 (菜鸟二级) | 2012-09-19 17:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册