Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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 PyMysql使用索引字段选择非常慢的位置_Python_Mysql_Pymysql - Fatal编程技术网

Python PyMysql使用索引字段选择非常慢的位置

Python PyMysql使用索引字段选择非常慢的位置,python,mysql,pymysql,Python,Mysql,Pymysql,我正在从一个有5000万行的表中进行选择,在索引字段(varchar(255))上使用“select where in”; sql是这样的 select Fid, Fnumber from t_word where Fnumber in (a,b,c) 其中,事实上(a,b,c)是500个元素的列表 在navicat中,sql在0.12秒内返回 但是使用pymysql 0.9.3 l = (a,b,c) sql = 'select Fid, Fnumber from t_word where

我正在从一个有5000万行的表中进行选择,在索引字段(varchar(255))上使用“select where in”; sql是这样的

select Fid, Fnumber from t_word where Fnumber in (a,b,c)
其中,事实上(a,b,c)是500个元素的列表

在navicat中,sql在0.12秒内返回

但是使用pymysql 0.9.3

l = (a,b,c)
sql = 'select Fid, Fnumber from t_word where Fnumber in %s'
cursor.execute(sql, [l])
result = cursor.fetchall()
花了60秒。我认为pymysql没有使用索引

我的sql格式化错误了吗

我在这里遵循了代码

我的mysql版本是5.7.18-cdb20170530-log


where字段是使用BTREE

sql查询建立索引的,这是正确的,但它似乎与pymysql解析器(,)有关。问题是,由于某种原因,存在一个瓶颈。如果您可以或至少限制要查询的数据数量,我真诚地建议您使用您所说的其他连接器。也许您可以用不同的表维度检查它是如何工作的,并将其划分为多个数据集进行查询。也许您还可以尝试重写查询,例如将列表分成两部分:例如:(a,b)(c)我切换到MySQLdb,但仍然获得相同的性能确切地说,使用MySQLdb需要多少时间?如果可以,也可以通过mysqlworkbench进行尝试。只是想知道你什么时候到那里。如果你得到一个合理的时间,那么我怀疑这一切都是关于连接器的,它管理返回的数据。我还发现了这篇有趣的文章