首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么优化这个查询?

2012-01-06 
如何优化这个查询??selectdbo.comlevel(c_name,getdate()),bb,c_name,id,j_code,j_position,c_com,j_jobto

如何优化这个查询??
select     dbo.comlevel(c_name,getdate()),bb,c_name,id,j_code,j_position,c_com,j_jobtotal,j_sex,j_degree,j_major,j_jobprovince,j_jobcity   from   v_com where   j_state   =   'sd '   and   c_islock   =   'wy '   and   dateadd(month,CAST(j_jobtime   as   int),j_addtime)> =getdate()   ORDER   BY   dbo.c_corder(c_name,   GETDATE(),0),bb   desc

如何优化这个查询???才三千多数据速度太慢受不了,v_com是试图,dbo.c_corder,dbo.comlevel是函数


[解决办法]
如果函数c_corder是递增或递减的话,把
ORDER BY dbo.c_corder(c_name, GETDATE(),0),bb desc,
改为
ORDER BY c_name,bb desc
可以吗
[解决办法]
查询速度慢的原因很多,操作系统的配置,数据库资源,等, 不 一定是语句的问题, 不过有的时候复杂的语句确实会使得查询速度慢,但是我看你的语句不是很复杂
如果是语句的问题我觉得你可以看下是那部分出了问题, 是函数那部分还是其他,
如果还慢2的话, 你可以试试加索引,如果你的表的字段多的话,也会影响速度的
[解决办法]
尽量不用函数,用子查询来代替.
还有就是where 语中尽量不要在等式的左边用公式,比如:
dateadd(month,CAST(j_jobtime as int),j_addtime)> =getdate()

change to :
j_addtime> =dateadd(month,-cast(j_jobtime),getdate())
[解决办法]
查询速度慢原因也有很多,不如使用了不合理的索引,或者根本没有使用索引;还有where左边的最好不用函数,当然有函数索引是可以的;条件的索引顺序等等。
楼主只有自己测试了。

热点排行