我正在构建一个自定义事件系统,如果你有一个如下所示的重复事件:
活动A从2011年3月3日起每4天重复一次
要么
活动B于2011年3月1日星期二每2周重复一次
如何以一种易于查找的方式将其存储在数据库中.如果有大量事件,我不希望出现性能问题,在渲染日历时我必须经历每一个事件.
用于存储事件和事件元数据的UI设计是

SQL TABLE DESIGN是
CREATE TABLE [dbo].[EVENTS]
([ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](255) NOT NULL)
Run Code Online (Sandbox Code Playgroud)
和
CREATE TABLE [dbo].[EVENTS_META](
[ID] [int] IDENTITY(1,1) NOT NULL,
[event_id] [int] NOT NULL,
[meta_key] [varchar](255) NOT NULL,
[meta_value] [bigint] NOT NULL)
Run Code Online (Sandbox Code Playgroud)
事件数据是

事件元数据是 
我跟着重复日历事件和一些最终的数学,我写了下面的查询
列出所有在结束日期之前的事件日期
SELECT EV.*
FROM events AS EV
RIGHT JOIN events_meta AS EM1 ON EM1.event_id = EV.id
RIGHT JOIN events_meta AS EM2 ON EM2.meta_key = 'repeat_interval_'+ CAST(EM1.id as Varchar(100))
WHERE EM1.meta_key = 'repeat_start'
AND ((1391040000 - …Run Code Online (Sandbox Code Playgroud)