我有一个数据库,其中包含超过 30,000 个表和每个表中约 40-100 行。我想检索包含特定列下的字符串的表名列表。
例如:
我想检索包含'foo'的所有表的名称......
Database
Table_1
ID: 1, STR: bar
ID: 2, STR: foo
ID: 3, STR: bar
Table_2
ID: 1, STR: bar
ID: 2, STR: bar
ID: 3, STR: bar
Table_3
ID: 1, STR: bar
ID: 2, STR: bar
ID: 3, STR: foo
所以在这种情况下,函数应该返回 ['Table_1', 'Table_3']
到目前为止,我有这个,它运行良好,但需要 2 多分钟才能执行,这对于我想到的应用程序来说太长了。
self.m('SHOW TABLES')
result = self.db.store_result()
tablelist = result.fetch_row(0, 1)
for table in tablelist:
table_name = table['Tables_in_definitions']
self.m("""SELECT `def` FROM `""" + table_name + """` WHERE `def` = '""" + str + """'""")
result = self.db.store_result()
r = result.fetch_row(1, 1)
if len(r) > 0:
results.append(table_name)
我不够聪明,无法想出一种方法来加快速度,所以如果有人有任何建议,将不胜感激,谢谢!