【问题标题】:sqlalchemy query from sorted columns in time series来自时间序列中排序列的 sqlalchemy 查询
【发布时间】:2018-11-06 23:00:14
【问题描述】:

我有一个 sqlite 表定义为:

class HourlyUserWebsite(Base):                                                                                                                                                                              
    __tablename__ = 'hourly_user_website'                                                                                                                                                                   

    id = Column(Integer, primary_key=True)                                                                                                                                                                  
    user = Column(String(600), index=True)                                                                                                                                                                  
    domain = Column(String(600))                                                                                                                                                                            
    time_secs = Column(Integer, index=True)                                                                                                                                                                 

    def __repr__(self):                                                                                                                                                                                     
        return "HourlyUserWebsite(user='%s', domain='%s', time_secs=%d)"  % \                                                                                                                               
            (self.user, self.domain, self.time_secs)                                                                                                                                                        

我使用类方法向它添加元素:

   def add_elements_to_hourly_db(self, data, start_secs, end_secs, engine):                                                                                                                                
        session = self._get_session(engine)                                                                                                                                                                 
        for el in data:                                                                                                                                                                                     
            session.add(el)                                                                                                                                                                                 
        session.commit()                                                                                                                                                                                    
        return                                                                                                                                                                                              

由于数据是时间序列,我希望始终添加具有增加或等于 time_secs 值(不减少)的元素。

我通过如下查询从表中获取数据: session.query(HorlyUserWebsite)

我希望查询结果按time_secsuser 排序。

有什么办法可以做到吗?数据是否可以以优化排序数据查询的方式存储,同时记住它是一个时间序列?

【问题讨论】:

    标签: database sqlite sqlalchemy


    【解决方案1】:
    session.query(HourlyUserWebsite).order_by(HourlyUserWebsite.user,HourlyUserWebsite.time_secs.desc()).all()
    

    【讨论】:

    • 操作的复杂度是多少?恐怕这可能没有利用数据已经按排序(及时)顺序插入的事实
    • 我非常怀疑会有任何性能差异。特别是如果您的 user 和 time_secs 已经是索引。无论如何,索引数据也将以不同于插入顺序的方式存储在磁盘上。如果您确实遇到性能问题,您可以迁移到 PostgreSQL。
    猜你喜欢
    • 1970-01-01
    • 2020-09-15
    • 2013-10-26
    • 2017-04-13
    • 1970-01-01
    • 2018-09-04
    • 2023-04-03
    • 2011-05-10
    • 2018-07-30
    相关资源
    最近更新 更多