擅长:python、mysql、java
<p>从对问题的评论:</p>
<blockquote>
<p>Unfortunately the database doesn't have a suitable keys or indexes in any of its columns.</p>
</blockquote>
<p>那么您就不能期望数据库有好的性能,因为<em>每一次</em>选择都是一次表扫描</p>
<p>我在网络共享上有一个Access数据库。它包含一个100万行的表,并且绝对没有索引。Access数据库文件本身是42 MiB。当我这样做的时候</p>
<pre class="lang-python prettyprint-override"><code>t0 = time()
df = pd.read_sql_query("SELECT COUNT(*) AS n FROM Table1", cnxn)
print(f'{time() - t0} seconds')
</code></pre>
<p>它耗时75秒,生成45个MiB的网络流量。只需向表中添加一个主键,文件大小就会增加到48 MiB,但同样的代码需要10秒,并生成7 MiB的网络流量</p>
<p>TL;DR:将主键添加到表中,否则将继续受到性能不佳的影响</p>