我想使用<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr class="parent">
<td><input type="button" name="ownorwant" value="own"></td>
<td><input type="button" name="ownorwant" value="want"></td>
</tr>
<tr style="display: none;" class="child1">
<td><input type="button" name="size" value="big" /></td>
<td><input type="button" name="size" value="small" /></td>
</tr>
<tr style="display: none;" class="child3">
<td><input type="submit" name="save" value="save" /></td>
</tr>
</tbody>
<tbody>
<tr class="parent">
<td><input type="button" name="ownorwant" value="own"></td>
<td><input type="button" name="ownorwant" value="want"></td>
</tr>
<tr style="display: none;" class="child1">
<td><input type="button" name="size" value="big" /></td>
<td><input type="button" name="size" value="small" /></td>
</tr>
<tr style="display: none;" class="child3">
<td><input type="submit" name="save" value="save" /></td>
</tr>
</tbody>
</table>
中多个表的数据。我有2个从服务器下载数据的想法,一种方法是使用pandas dataframe
连接和检索数据,一种方法是单独下载数据帧并使用pandas.merge合并它们。
当我想将数据下载到SQL
。
pandas
query='''SELECT table1.c1, table2.c2
FROM table1
INNER JOIN table2 ON table1.ID=table2.ID where condidtion;'''
df = pd.read_sql(query,engine)
哪一个更快?假设我想要超过2个表和2列。
有什么好主意吗?
如果有必要知道我使用df1 = pd.read_sql('select c1 from table1 where condition;',engine)
df2 = pd.read_sql('select c2 from table2 where condition;',engine)
df = pd.merge(df1,df2,on='ID', how='inner')
。
答案 0 :(得分:3)
前者比后者快。前者只需对数据库进行一次调用,并返回已加入和过滤的结果。但是,后者对数据库进行两次调用,然后将应用程序/程序中的结果集合并。
答案 1 :(得分:1)
要真正了解哪个更快,您需要使用数据库中的数据尝试这两个查询。
经验法则是在单个查询中执行逻辑。数据库专为查询而设计。它们具有复杂的算法,多个处理器和大量内存来处理它们。所以,依靠数据库是非常合理的。此外,每个查询都有一些开销,因此两个查询的开销是一个查询的两倍。
也就是说,绝对有可能在大熊猫中开展工作的速度会更快。熊猫将在本地记忆中完成工作。这是有限的 - 但比“过去的好时光”要少得多。它可能不会是多线程的。
例如,结果集可能比两个表大得多。在这种情况下,将数据从数据库移动到应用程序可能(相对)昂贵。在pandas中完成工作可能比在数据库中更快。
在另一个极端,没有记录可能符合JOIN
条件。这绝对是单个查询更快的情况。