多字段表模糊查询效率问题

xgrils 山东人才信息网 技术主管  2010-10-25 01:52:51
现有表table1数据量在10万-20万,60多个字段,对table1按条件进行分页查询,where条件数量不定,包括(精确条件、模糊条件和in语句),此表的insert、update操作较多,索引已建
分页变量:
int now=2;//当前页
int pagesize=20;//每页显示条数
string where="cl5=2 and cl6 in(170,171,172) and cl7 like '%市场营销%'";//条件

以下拼sql语句:
select * from (
select top " + pagesize+ " * from (
select top " + (now * pagesize) + " * from (
select cl1,cl2,cl3,cl4,cl5,cl6,cl7,cl8 FROM table1 where "+where+"
) a order by a.cl1 desc
) b order by b.cl1 asc
)c order by c.cl1 desc
现在的问题就是sql占用cup资源灰常大,请各位高手帮忙提出对sql语句或数据结构等其它有效的解决方案
...全文
169 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zsforever 2010-10-25
你们的表数据量很小,但还是要尽量利用索引
尽量在常用的where字句上的字段建立索引或联合索引

这需要你的监测和统计
回复
xgrils 2010-10-25
感谢!!!!
楼上的方法试了的确节省了查询时间,少一步查询效果很明显,不知对于这种多字段表结构有没有更好的办法
回复
zsforever 2010-10-25
你本身拼接的时候有点问题

1,第一步拼接的时候如下
select top " + (now * pagesize) + " * from (
select cl1,cl2,cl3,cl4,cl5,cl6,cl7,cl8 FROM table1 where "+where+"
) a order by a.cl1 desc
改成
select top "+(now * pagesize)+" cl1,cl2,cl3,cl4,cl5,cl6,cl7,cl8 from table1 a where "+where+" order by a.cl1 desc
2,保证cl1上有 desc的索引


回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-25 01:52
社区公告
暂无公告