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

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语句或数据结构等其它有效的解决方案
...全文
272 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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的索引


22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧