+ -
当前位置:首页 → 问答吧 → SQL优化,求教?

SQL优化,求教?

时间:2011-11-11

来源:互联网

select * from userpathlog where 
datediff(day,createtime,convert(datetime,'2011-11-11'))=0
 and (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')

select count(*) from userpathlog where 
datediff(day,createtime,convert(datetime,'2011-11-11'))=0
 and (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')

这两条相差一秒,上面要4秒,下面3秒,该如何优化?

作者: Alen_86   发布时间: 2011-11-11

SQL code
 createtime >= '2011-11-11' AND createtime<'2011-11-12'


加上索引,日期列createtime和realurl

作者: roy_88   发布时间: 2011-11-11

SQL code
select count(*) from userpathlog where  
convert(char(10),createtime,121)='2011-11-11'
 and (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')

作者: dovei   发布时间: 2011-11-11

SQL code
select * from userpathlog where  
createtime>='2011-11-11'
AND createtime<'2011-11-12'
and (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')

select count(*) from userpathlog where  
createtime>='2011-11-11'
AND createtime<'2011-11-12'
and (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')

createtime加索引

作者: Haiwer   发布时间: 2011-11-11

realurl--這列的條件用不到索引,這是慢的原因啊,試試一下強制索引 with(index=索引名)

作者: roy_88   发布时间: 2011-11-11

SQL code
select
 count(*) 
from
 userpathlog where  
createtime>='2011-11-11'
and
 createtime<'2011-11-12'
and
 (realurl like '%regmobile.aspx%' or realurl like '%register.aspx%' or realurl like '%regmail.aspx%')



作者: fredrickhu   发布时间: 2011-11-11

谢谢各位了,我去试试

作者: Alen_86   发布时间: 2011-11-11

[sql_code]
select *
from userpathlog
where 0 = datediff(day, createtime, convert(datetime, '2011-11-11'))
  and 1 = case when realurl like '%regmobile.aspx%' then 1
  when realurl like '%register.aspx%' then 1
  when realurl like '%regmail.aspx%' then 1
  else 0 end

[/sql_code]

试试看

作者: fancy0109   发布时间: 2011-11-11

再不行,就用 exists 替换 when 条件

作者: fancy0109   发布时间: 2011-11-11

引用 4 楼 roy_88 的回复:

realurl--這列的條件用不到索引,這是慢的原因啊,試試一下強制索引 with(index=索引名)

这是根本原因,其它的方法经测试,性能没什么差别,基本一样,没办法吗

作者: Alen_86   发布时间: 2011-11-11