pd.read_sql对于某些类型的首次查询很慢

当我将某些类型的SQL查询中的数据读入pandas数据帧时遇到性能问题。我首先使用以下代码在Azure中查询SQL DB:

cnxn = pyodbc.connect(db_conn_str)
starttime = timeit.default_timer()   
sql = "Select * from table where var1 != 'a' and var2 = 'b' and var3 = 'c' and var3 = 'd'"
outdata = pd.read_sql(sql, cnxn)   
print("Elapsed time :", timeit.default_timer() - starttime)

这通常需要20到30秒左右的时间。如果我重新运行上述查询,或者如果我在接下来的20分钟左右的时间内运行了另一个查询,其中“ a”,“ b”,“ c”和“ d”不同,则查询仅需约0.5秒。经过20分钟后,下一次此类查询将花费20-30秒。

其他类型的查询需要更短的时间(例如,我仅限制使用var2的查询),并且我尝试过先运行这些查询,但是使用上述代码进行的第一个查询仍然需要20-30秒。

我想这与SQL DB有关吗?有人可以解释为什么我看到这种情况吗?有什么方法可以防止第一个查询花费更长的时间?