PyMysql выберите где очень медленно с индексированным полем - PullRequest
0 голосов
/ 17 октября 2019

я делаю выборку из таблицы с 50 миллионами строк с помощью 'select where in' в индексированном поле (varchar (255));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 неправильно?

выберите pymysql с переменным числом параметров я следовал здесь коду

моя версия mysql 5.7.18-cdb20170530-log

где поле индексируется ИСПОЛЬЗУЯ BTREE

...