Create index on the logs table on time instead of on kind.
That way we can search through all logs in constant time instead of having to perform a full table scan.
This commit is contained in:
		
							parent
							
								
									54ad65c744
								
							
						
					
					
						commit
						d00a5f737c
					
				
					 3 changed files with 25 additions and 2 deletions
				
			
		|  | @ -79,7 +79,7 @@ def create_log_db(): | |||
| 			subject TEXT | ||||
| 		); | ||||
| 
 | ||||
| 		CREATE INDEX idx_logs_jid_id_kind ON logs (jid_id, kind); | ||||
| 		CREATE INDEX idx_logs_jid_id_time ON logs (jid_id, time DESC); | ||||
| 
 | ||||
| 		CREATE TABLE caps_cache ( | ||||
| 			hash_method TEXT, | ||||
|  |  | |||
|  | @ -27,7 +27,7 @@ docdir = '../' | |||
| basedir   = '../' | ||||
| localedir = '../po' | ||||
| 
 | ||||
| version = '0.13.10.0-dev' | ||||
| version = '0.13.10.1-dev' | ||||
| 
 | ||||
| import sys, os.path | ||||
| for base in ('.', 'common'): | ||||
|  |  | |||
|  | @ -214,6 +214,8 @@ class OptionsParser: | |||
| 			self.update_config_to_01258() | ||||
| 		if old < [0, 13, 10, 0] and new >= [0, 13, 10, 0]: | ||||
| 			self.update_config_to_013100() | ||||
| 		if old < [0, 13, 10, 1] and new >= [0, 13, 10, 1]: | ||||
| 			self.update_config_to_013101() | ||||
| 
 | ||||
| 		gajim.logger.init_vars() | ||||
| 		gajim.config.set('version', new_version) | ||||
|  | @ -857,4 +859,25 @@ class OptionsParser: | |||
| 		con.close() | ||||
| 		gajim.config.set('version', '0.13.10.0') | ||||
| 
 | ||||
| 	def update_config_to_013101(self): | ||||
| 		back = os.getcwd() | ||||
| 		os.chdir(logger.LOG_DB_FOLDER) | ||||
| 		con = sqlite.connect(logger.LOG_DB_FILE) | ||||
| 		os.chdir(back) | ||||
| 		cur = con.cursor() | ||||
| 		try: | ||||
| 			cur.executescript( | ||||
| 				''' | ||||
| 				DROP INDEX IF EXISTS idx_logs_jid_id_kind; | ||||
| 
 | ||||
| 				CREATE INDEX IF NOT EXISTS | ||||
| 				idx_logs_jid_id_time ON logs (jid_id, time DESC); | ||||
| 				''' | ||||
| 			) | ||||
| 			con.commit() | ||||
| 		except sqlite.OperationalError: | ||||
| 			pass | ||||
| 		con.close() | ||||
| 		gajim.config.set('version', '0.13.10.1') | ||||
| 
 | ||||
| # vim: se ts=3: | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue