【发布时间】:2016-05-10 01:54:30
【问题描述】:
有list1和list2,每个包含1,104,824个值
table1 有 350,000,000 行,3 列:ID、name1、name2
这就是我试图做的:
con = mdb.connect('localhost','user','password','db')
cur = con.cursor()
for i in range(1104824)
sql ="select count(distinct(a.ID)) from (select name1 ,ID from table1 where name2 <> '"+str(list1[i])+"') as a where a.name1 = '"+str(list2[i])+"'"
cur.execute(sql)
data = cur.fetchone()[0]
但它非常非常慢。有没有更快的方法来做这个查询?
【问题讨论】:
-
张贴表格结构以及您到底想要做什么。肯定有一种方法不涉及 110 万次查询?
-
如果
ID是PRIMARY KEY,您可以将COUNT(DISTINCT ID)更改为COUNT(*)。如果name1,name2是唯一的,您可能可以摆脱ID。
标签: python mysql sql performance