首页 新闻 会员 周边 捐助

mssql2005 like查询速度慢 解决办法

0
悬赏园豆:10 [已解决问题] 解决于 2013-10-31 16:12

如题!

我有个文章分类表,大概1W的数据库

为了查询子分类,class_list 数据格式为:,47,55,58,

查询时用 like '%,47,%' 速度很慢,大概需要2秒时间!

请问有何办法解决查询速度过慢的情况。

烦请详细一点! 万谢!

PKSEO_dudu的主页 PKSEO_dudu | 初学一级 | 园豆:9
提问于:2013-10-31 10:09
< >
分享
最佳答案
0

有没有在class_list字段上建立索引?

收获园豆:7
dudu | 高人七级 |园豆:31053 | 2013-10-31 10:12

建立个什么类型的索引比较合适?

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 10:14


like方式查询  迭代子类
这两种方法哪种要更快一点

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 10:15

@PKSEO_dudu: 

对于这样的Like查询,索引效果并不明显,详见like语句百分号前置会使用到索引吗?

dudu | 园豆:31053 (高人七级) | 2013-10-31 10:23

@PKSEO_dudu: 

如果用另外一张表存放文章ID与了分类ID的关联,会比用Like快很多

dudu | 园豆:31053 (高人七级) | 2013-10-31 10:24

@dudu: 是一张表里面,不涉及到联合查询。

就算建立一个非聚集索引,性能是否会有很大的提升?

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 10:39

@PKSEO_dudu: 

对于%开头的Like查询,不会有大的提升,更别说很大的提升。

如果你一定要用Like,建议你试试建立全文索引。

dudu | 园豆:31053 (高人七级) | 2013-10-31 10:43

@dudu: 如果我不用模糊查询,而选择递归子类

这样就是会多次查询,性能是不是要优一些?

您在处理这方面的问题时,一般选择什么方法?

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 11:56

@PKSEO_dudu: 

channel_id:6,category_id:47,耗时:13.0985,条件:is_lock=0 and img_url<>''
channel_id:6,category_id:47,耗时:283.1577,条件:is_lock=0 and img_url=''

还有个问题请教一下
同一个表的查询,img_url 不为空,和为空的查询,耗时相差这么多?
有没有办法减少耗时?

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 11:59

@PKSEO_dudu: 

建议根据执行计划,优化索引与查询语句

dudu | 园豆:31053 (高人七级) | 2013-10-31 14:09

@dudu: 执行计划??

您指的是使用存储过程?

PKSEO_dudu | 园豆:9 (初学一级) | 2013-10-31 14:23

@PKSEO_dudu: 

推荐阅读:SQL Server 执行计划

dudu | 园豆:31053 (高人七级) | 2013-10-31 14:51
其他回答(1)
0

对于 这种较长字符也可以考虑用全文检索,毕竟索引对于过长的字符内容维护与检索都比较耗时

收获园豆:1
Zery | 园豆:6151 (大侠五级) | 2013-10-31 13:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册