我有一张桌子[Evetns]
- 行
EventName, EventDateTime
Sample, 25/12/2000
我有另一个表格,其中包含期间集作为DateRange
类型
period_range
1/1/1999,1/1/2001
1/1/1999,24/12,2000
所以结果是
Sample, 1
事件日期为 25/12/2000 的事件样本位于期间数据的一个范围内。
为此,我创建了一个函数 GetRange(),如下所示
select
@var=count(*)
--, convert(datetime,PARSENAME(REPLACE(period_range,',','.'),2),103),
--convert(datetime,PARSENAME(REPLACE(period_range,',','.'),1),103)
from
[dbo].[DateRange]
where
@date between convert(datetime,PARSENAME(REPLACE(period_range,',','.'),2),103)
and convert(datetime,PARSENAME(REPLACE(period_range,',','.'),1),103)
该函数从事件表中接收日期并将其传递给返回和 int 值的上述函数,我正在使用如下函数,
select eventname,dbo.[getrange](eventdate) exist from [dbo].[Evetns]
结果集满足要求,但需要一些建议以获得更好的性能。应该使用哪个?
哪个函数对性能 CHARINDEX、SUBSTIRNG 或 PARSENAME 有好处?
批量记录是个好主意吗?
任何建议将不胜感激。