下面是使用Jaydebeapi通过JDBC连接连接到Teradata的代码。当我使用razorsql GUI运行查询时,只需15秒。当我通过下面的代码运行它时,只需要花费20多分钟来运行query1。
Jaydebeapi有什么问题或者我可以通过优化查询/使用Jpype来加快速度吗?
#-*- coding: utf-8 -*-
import jaydebeapi
import jpype
import pandas as pd
import numpy as np
import collections
query_dict=collections.OrderedDict()
connection = jaydebeapi.connect('com.teradata.jdbc.TeraDriver', ['my_db_name','my_username','my_password'], ['/Applications/drivers/tdgssconfig.jar','/Applications/drivers/terajdbc4.jar'],)
cur = connection.cursor()
query_name_list=['query1','query2']
query1= """select ......"""
query2= """ select ....."""
for i in query_list:
query_dict[i]=locals()[i]
print query_dict.keys()
for index in range(len(query_list)):
tera_query=query_dict.values()[index]
cur.execute(tera_query)
print "executing ... "
result=cur.fetchall()
print "fetching results ... "
答案 0 :(得分:0)
我已经发布了about some performance considerations。
再次:
...使用JPype实现获取大型结果集会导致对每个单元格值进行一些JNI调用,从而导致很多开销。 ...
BTW:主题" ..如果2个驱动程序文件"有点误导。驱动程序文件的数量肯定与性能问题无关。