我有两个名为geostat和res的表。我想对这两个表进行内部联接,并将结果存储到表中。我也知道sql查询,但是当我在python中使用sqlite时,执行查询似乎需要更长的时间(大约1小时,这不太好)。我想知道,既然它有一个内部连接,它是否需要更长的时间来执行?如何优化查询?你知道吗
我的sql查询是:
select res.[MaxOfState count percent], res.[grpno.], geostat.[state code] from res inner join geostat on res.[MaxOfState count percent] = geostat.[count percent] AND res.[grpno.] = geostat.[grpno.]
我的表格如下:
geostat:
count percent grpno. state code
0 14.78 1 CA
1 0.00 2 CA
2 8.80 3 CA
3 9.60 4 FL
4 55.90 4 MA
5 0.00 2 FL
6 0.00 6 NC
7 0.00 5 NC
8 6.90 1 FL
9 59.00 4 MA
res:
grpno. MaxOfcount percent
0 1 14.78
1 2 0.00
2 3 8.80
3 4 59.00
4 5 0.00
5 6 0.00
现在,当我执行内部连接查询时,执行它需要一个多小时。我的python代码如下:
import pandas as pd
from sqlalchemy import create_engine # database connection
disk_engine = create_engine('sqlite:///fnma.db') # Initializes database with filename fnma.db in current directory
inner_join_geostat = pd.read_sql('select res.[MaxOfState count percent], res.[grpno.], geostat.[state code] from res inner join geostat on res.[MaxOfState count percent] = geostat.[count percent] AND res.[grpno.] = geostat.[grpno.] ',disk_engine)
inner_join_geostat.to_sql('inner_join_geostat', disk_engine, if_exists='replace')
有人能告诉我如何优化查询/代码吗?你知道吗
我的解释查询计划如下:
selectid order from detail
0 0 0 SCAN TABLE geostat_query_recent
0 1 1 SEARCH TABLE geostatdf_recent1 USING AUTOMATIC COVERING INDEX (STATE POOL NUMBER=? AND STATE COUNT PERCENT=?)
仅供参考:我还没有创建索引。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐