两张表要做链接查询,连接字段是Time,类型是datetime,例2012-07-24 19:41:02.000现在的问题是两张表的时间字段不完全相同,就是秒数不同,相差几秒,精确到分是想相同的。所以两个表连接的同时还要对时间字段做处理。我写的SQL如下:select table.Time,field1,field2,……
from table1,table2 where datediff(dd,table1.Time,'2012-12-03')=0
and datepart(mi,[1].Time) = 00 and left([1].Time,18)=left([2].Time,18);目的是为了把两张表中精确到分的整点数据取出来,一共24条,每小时一条。这条语句查询效率很低,有10万多条数据,我查了一下要2~3分钟才能查出来,做个报表系统查张报表要几分钟这个效率也太低了点。请问高手该如何优化!!主要时间耗费在链接查询上。
from table1,table2 where datediff(dd,table1.Time,'2012-12-03')=0
and datepart(mi,[1].Time) = 00 and left([1].Time,18)=left([2].Time,18);目的是为了把两张表中精确到分的整点数据取出来,一共24条,每小时一条。这条语句查询效率很低,有10万多条数据,我查了一下要2~3分钟才能查出来,做个报表系统查张报表要几分钟这个效率也太低了点。请问高手该如何优化!!主要时间耗费在链接查询上。
from table1 t1,table2 t2
where t1.Time >= '20121203' and t1.Time < DATEADD(d, 1, '20121203')
and datepart(mi, t1.Time) = '00'
and t2.Time >= DATEADD(mi,DATEDIFF(mi,0,t1.Time),0) and t2.Time < DATEADD(mi,DATEDIFF(mi,0,DATEADD(mi,1,t1.Time)),0)
方法2在方法1的基础上锦上添花
针对我写的那个sql语句能告诉我怎么建立时间索引吗,我半路转学计算机,不是太懂,谢谢
where a.Time>='日期' and a.time<'日期'
AND b.time>=DATEADD(day,0,CONVERT(varchar(12),b.time,23))
and b.time<DATEADD(day,0,CONVERT(varchar(12),b.time,23))