就SQLITE而言,我是新手。在这里,我有一个工作查询,并希望优化相同,以提高性能。
此表cinfo有5列 - ID
(主键),Name
,StartDate
,EndDate
,Count
- 我在附近带有ID,名称和日期(YYYYMMDD
)的3000K记录,我将在此表中插入。现在的条件是:
id
,startdate=date
,enddate=date
和count
的新行(计数取决于是否出现这个id在另一个表中,我不想将其视为硬编码值)date
小于startdate
,则startdate
将更新为date
。date
大于enddate
,enddate
将更新为date
。Name
才会使用新名称进行更新Count依赖于另一个表,因此忽略了现在。这是查询 -
INSERT OR REPLACE INTO cinfo
(ID, StartDate, EndDate, Count, Name) values
('3', min(ifnull((select StartDate from cinfo where ID='3'),99999999), 20140113),
max(ifnull((select EndDate from cinfo where ID='3'), 0), 20140113),
ifnull((select Count from cinfo where ID='3'),0) + 1,
ifnull((select Name from cinfo c
where (ID='3') and (c.EndDate > '20140113')),
'name3'));
此示例中当前记录的值为 - id=3
,date='20140113'
,name='name3'
。
我正在使用perl脚本来连接和更新此记录。