代码之家  ›  专栏  ›  技术社区  ›  charliealpha

RODBC posixct日期字段使查询速度非常慢

  •  0
  • charliealpha  · 技术社区  · 7 年前

    sqlQuery . 我运行一个SQL脚本,生成1100万行数据。使用RODBC拉取数据需要78秒,但不幸的是,当我包括一个日期/时间字段时,从RODBC拉取数据需要180秒,而在Management Studio中只需要78秒。我想知道为什么请,我能做些什么。

    在Sql server上,日期/时间字段的格式如下: YYYY-MM-DD HH:MM:SS。000

    我一定会的 Sys.setenv(TZ="UTC")

    lossdata <- as.data.table(sqlQuery(dbhandle, qry)) 
    

    qry公司 使用设置 odbcDriverConnect

    当我从R中提取时,我得到了以下格式的日期/时间字段: YYYY-MM-DD HH:MM:SS (without .000)

    我也试过RJDBC,但需要同样的时间。将日期/时间字段从字符转换为 posixct posixct 当我在排序中使用它时,如果不是这种数据类型,则需要花费很长时间。

    请帮忙。我不知道如何重现这个例子。如果您需要任何其他信息,请告诉我。

    SQL查询

    具有 事件日期

    select pp.EventDate as EVENTDATE, pp.EVENTID as EVENTID 
    from 
        (select * from set.dbo.events where setid in (16,32)) pp 
         inner join 
            (select eventid from databasename.dbo.rdm_port where anls = 93) y 
         on pp.EventId = y.EVENTID
    

    事件日期

    select pp.EVENTID as EVENTID 
    from 
       (select * from set.dbo.events where setid in (16,32)) pp 
        inner join 
           (select eventid from databasename.dbo.rdm_port where anls = 93) y 
        on pp.EventId = y.EVENTID
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   charliealpha    7 年前
    DATEDIFF(s,'1970-01-01 00:00:00',pp.EventDate) as EVENTDATE
    

    相反,使用RJDBC解决了这个特殊的问题。

    自1970-01-01以来,日期现在以秒为单位,排序速度很快。如果需要,可以将其转换为日期。