Ticket #2619: sqlquery_optimization.diff

File sqlquery_optimization.diff, 4.5 kB (added by kanru, 4 months ago)
  • LogViewer.py

    old new  
    230230        t1 = time.time() 
    231231        for (stamp, name, account, data) in self.logger.query('\ 
    232232        select e.stamp, e.name, u.account, ue.data \ 
    233         from event e, user_event ue, user u \ 
     233        from user u, event e, user_event ue \ 
    234234        where ue.id_event = e.id and \ 
    235235        ue.id_user = u.id and \ 
    236236        u.account in (%s) and \ 
  • plugins_base/Logger.py

    old new  
    9191        data TEXT 
    9292 ) 
    9393    ''' 
     94    CREATE_USER_EVENT_INDEX_EVENT = 'CREATE INDEX ueidevent ON user_event(id_event)' 
     95    CREATE_USER_EVENT_INDEX_USER = 'CREATE INDEX ueiduser ON user_event(id_user)' 
    9496 
    9597    USER_EXISTS = 'SELECT id FROM user WHERE account = ?' 
    9698    USER_ADD = 'INSERT INTO user(id, account) VALUES(null, ?)' 
     
    131133        self.cursor.execute(Logger.CREATE_CONVERSATION) 
    132134        self.cursor.execute(Logger.CREATE_EVENT) 
    133135        self.cursor.execute(Logger.CREATE_USER_EVENT) 
     136        self.cursor.execute(Logger.CREATE_USER_EVENT_INDEX_EVENT) 
     137        self.cursor.execute(Logger.CREATE_USER_EVENT_INDEX_USER) 
    134138        self.cursor.execute(Logger.CREATE_CONVERSATION_EVENT) 
    135139        self.connection.commit() 
    136140         
     
    226230    def get_user_events(self): 
    227231        '''return a list of unique user events found on the logs''' 
    228232        return [item[0] for item in \ 
    229             self.query('select distinct name from event, user_event where \ 
     233            self.query('select distinct name from user_event, event where \ 
    230234            id_event = id order by name')] 
    231235 
    232236    def get_nick_stamp(self, contact, timestamp): 
     
    234238        if no stamp is available''' 
    235239 
    236240        result = self.query('select e.stamp \ 
    237         from event e, user_event ue, user u \ 
     241        from user u, event e, user_event ue \ 
    238242        where ue.id_user = u.id and \ 
    239243        ue.id_event = e.id and \ 
    240244        e.stamp < %s and \ 
     
    255259        return None if no result''' 
    256260 
    257261        result = self.query('select e.stamp \ 
    258         from event e, user_event ue, user u \ 
     262        from user u, event e, user_event ue \ 
    259263        where ue.id_user = u.id and \ 
    260264        ue.id_event = e.id and \ 
    261265        e.stamp >= %s and \ 
     
    278282            return contact 
    279283 
    280284        return self.query('select ue.data \ 
    281         from user_event ue, event e \ 
     285        from event e, user_event ue \ 
    282286        where e.stamp = %f and \ 
    283287        ue.id_event = e.id' % (stamp,))[0][0] 
    284288     
     
    479483 
    480484        query = ''' 
    481485        select e.stamp, ue.data  
    482         from event e, user_event ue, user u 
     486        from user u, event e, user_event ue 
    483487        where e.id = ue.id_event and 
    484488        u.id = ue.id_user and 
    485489        e.name = "status-changed" and 
     
    497501 
    498502        query = ''' 
    499503        select e.stamp, ue.data  
    500         from event e, user_event ue, user u 
     504        from user u, event e, user_event ue 
    501505        where e.id = ue.id_event and 
    502506        u.id = ue.id_user and 
    503507        e.name = "nick-changed" and 
     
    515519 
    516520        query = ''' 
    517521        select e.stamp, ue.data  
    518         from event e, user_event ue, user u 
     522        from user u, event e, user_event ue 
    519523        where e.id = ue.id_event and 
    520524        u.id = ue.id_user and 
    521525        e.name = "personal-message-changed" and 
     
    566570 
    567571        query = ''' 
    568572        select e.stamp, ce.data  
    569         from event e, conversation_event ce, user u 
     573        from user u, event e, conversation_event ce 
    570574        where e.id = ce.id_event and 
    571575        u.id = ce.id_user and 
    572576        e.name = "message" and 
     
    584588 
    585589        query = ''' 
    586590        select e.stamp, ue.data  
    587         from event e, user_event ue, user u 
     591        from user u, event e, user_event ue 
    588592        where e.id = ue.id_event and 
    589593        u.id = ue.id_user and 
    590594        e.name = "display-picture" and 
     
    602606 
    603607        query = ''' 
    604608        select e.stamp, ce.data  
    605         from event e, conversation_event ce, user u 
     609        from user u, event e, conversation_event ce 
    606610        where e.id = ce.id_event and 
    607611        u.id = ce.id_user and 
    608612        e.name = "custom-emoticon" and