Python MySQL SELECT WHERE 列表
Python MySQL SELECT WHERE with list
我有以下 Python MySQL 代码。
cursor = mydb.cursor()
cursor.execute('SELECT id FROM table1 WHERE col1=%s AND col2=%s', (val1, val2))
ids = cursor.fetchall()
for id in ids:
cursor.execute('SELECT record_key FROM table2 WHERE id=%s limit 1', (id[0], ))
record_keys = cursor.fetchall()
print(record_keys[0][0])
如何提高效率?我正在使用 5.5.60-MariaDB 和 Python 2.7.5。我在 table1 中有大约 3.5 亿个条目,在 table2 中有 1500 万个条目。
幸运的是,您可以使用 LEFT JOIN 在单个查询中执行此操作。
cursor = mydb.cursor()
cursor.execute(
"SELECT t1.id, t2.record_key FROM table1 t1 "
"LEFT JOIN table2 t2 ON (t1.id = t2.id) "
"WHERE t1.col1=%s AND t2.col2=%s",
(val1, val2),
)
for id, record_key in cursor.fetchall():
pass # do something...
我有以下 Python MySQL 代码。
cursor = mydb.cursor()
cursor.execute('SELECT id FROM table1 WHERE col1=%s AND col2=%s', (val1, val2))
ids = cursor.fetchall()
for id in ids:
cursor.execute('SELECT record_key FROM table2 WHERE id=%s limit 1', (id[0], ))
record_keys = cursor.fetchall()
print(record_keys[0][0])
如何提高效率?我正在使用 5.5.60-MariaDB 和 Python 2.7.5。我在 table1 中有大约 3.5 亿个条目,在 table2 中有 1500 万个条目。
幸运的是,您可以使用 LEFT JOIN 在单个查询中执行此操作。
cursor = mydb.cursor()
cursor.execute(
"SELECT t1.id, t2.record_key FROM table1 t1 "
"LEFT JOIN table2 t2 ON (t1.id = t2.id) "
"WHERE t1.col1=%s AND t2.col2=%s",
(val1, val2),
)
for id, record_key in cursor.fetchall():
pass # do something...