Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas read_sql和sqlite在简单查询中的速度非常慢,这是预期的吗?_Python_Pandas_Sqlite - Fatal编程技术网

Python Pandas read_sql和sqlite在简单查询中的速度非常慢,这是预期的吗?

Python Pandas read_sql和sqlite在简单查询中的速度非常慢,这是预期的吗?,python,pandas,sqlite,Python,Pandas,Sqlite,我已经创建了24个大型sqlite数据库,以帮助处理由于内存限制而无法直接在pandas dataframe中管理的大量数据。每个数据库大约有4m行、229列,包含一系列字符串、整数和浮点数据点。当保存到硬盘驱动器时,它们为c2.2Gb 在尝试使用新数据库之后,我发现查询速度非常慢。运行此查询仅计算数据中的行需要50秒: df=pd.read\u sql('SELECT COUNT(ID)FROM MY\u TABLE',engine) 引擎是用sqlalchemy创建的 engine=sqla

我已经创建了24个大型sqlite数据库,以帮助处理由于内存限制而无法直接在pandas dataframe中管理的大量数据。每个数据库大约有4m行、229列,包含一系列字符串、整数和浮点数据点。当保存到硬盘驱动器时,它们为c2.2Gb

在尝试使用新数据库之后,我发现查询速度非常慢。运行此查询仅计算数据中的行需要50秒:

df=pd.read\u sql('SELECT COUNT(ID)FROM MY\u TABLE',engine)

引擎是用sqlalchemy创建的

engine=sqlalchemy.create_引擎('sqlite:///my_path/my_db.db)

我还尝试了
sqlite3.connection()
,得到了类似的结果

在峰值时,运行该进程仅占用6%到7%的CPU,并且RAM没有增加

这是预期的性能,还是我创建的数据库可能存在问题?还有什么我可以考虑加快处理的吗?


提前感谢您的帮助

可能需要检查在不与pandas交互的情况下运行同一代码需要多长时间。然后,您可以进一步挖掘,看看连接问题是否与此有关。另外,
df=pd.read\u sql('SELECT COUNT(ID)FROM MY\u TABLE',engine)
看起来很糟糕。除非我真的需要,否则我不会使用
pandas
作为执行SQL的代理。关于这个问题,我认为这很高。数行速度慢的原因有很多;我正在试着看看它们是否能转换成SQLite。我似乎找不到SQLite的任何窍门:/ID上有索引吗?谢谢大家,在ID字段中添加索引大大改善了
COUNT
语句的性能(c50秒下降到3秒)但是其他简单的查询,比如
groupby
,即使只使用索引列,也需要150秒。我也在没有与pandas接口的情况下运行了相同的查询,但我无法检测到性能上的任何差异,处理器使用率仍然可以忽略。可能需要检查在没有与pandas接口的情况下运行相同代码所需的时间。然后,您可以进一步挖掘,看看连接问题是否与此有关。另外,
df=pd.read\u sql('SELECT COUNT(ID)FROM MY\u TABLE',engine)
看起来很糟糕。除非我真的需要,否则我不会使用
pandas
作为执行SQL的代理。关于这个问题,我认为这很高。数行速度慢的原因有很多;我正在试着看看它们是否能转换成SQLite。我似乎找不到SQLite的任何窍门:/ID上有索引吗?谢谢大家,在ID字段中添加索引大大改善了
COUNT
语句的性能(c50秒下降到3秒)但是其他简单的查询,比如
groupby
,即使只使用索引列,也需要150秒。我也在没有与pandas接口的情况下运行了相同的查询,但我无法检测到性能上的任何差异,处理器使用率仍然可以忽略不计