SQLite查询优化插入或替换

时间:2014-06-23 16:40:08

标签: sql perl sqlite

就SQLITE而言,我是新手。在这里,我有一个工作查询,并希望优化相同,以提高性能。

此表cinfo有5列 - ID(主键),NameStartDateEndDateCount - 我在附近带有ID,名称和日期(YYYYMMDD)的3000K记录,我将在此表中插入。现在的条件是:

  1. 如果表中没有包含相同ID的记录,请插入idstartdate=dateenddate=datecount的新行(计数取决于是否出现这个id在另一个表中,我不想将其视为硬编码值)
  2. 如果记录存在且date小于startdate,则startdate将更新为date
  3. 如果记录存在且date大于enddateenddate将更新为date
  4. 仅当条件3为真时,
  5. Name才会使用新名称进行更新
  6. 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=3date='20140113'name='name3'

    我正在使用perl脚本来连接和更新此记录。

0 个答案:

没有答案