相关疑难解决方法(0)

如何有效地使用MySQLDB SScursor?

我必须处理一个大的结果集(可能是数十万行,有时更多).
不幸的是,它们需要一次性检索(启动时).

我试图通过使用尽可能少的内存来做到这一点.
通过查看,我发现使用SSCursor可能是我正在寻找的,但我仍然不知道如何正确使用它们.

fetchall()从基本游标或SScursor 做一个相同的(在内存使用方面)?
我可以从sscursor我的行逐个"流动"(或几个),如果是,
那么最好的方法是什么?

python mysql optimization cursor

31
推荐指数
2
解决办法
2万
查看次数

对于大型结果集,MySQLdb非常慢

我在phpMyAdmin和MySQLdb(python)中执行了以下查询.

SELECT *, (SELECT CONCAT(`id`, '|', `name`, '|', `image_code`)
FROM `model_artist` WHERE `id` = `artist_id`) as artist_data, 
FIND_IN_SET("metallica", `searchable_words`) as find_0
FROM `model_song` HAVING find_0
Run Code Online (Sandbox Code Playgroud)

phpMyAdmin说查询耗时2ms.我的python代码说使用MySQLdb查询需要848ms(甚至没有获取结果).

python代码:

self.db = MySQLdb.connect(host="localhost", user="root", passwd="", db="ibeat")
self.cur = self.db.cursor()

millis = lambda: time.time() * 1000

start_time = millis()
self.cur.execute_cmd("""SELECT *, (SELECT CONCAT(`id`, '|', `name`, '|', `image_code`)
FROM `model_artist` WHERE `id` = `artist_id`) as artist_data, 
FIND_IN_SET("metallica", `searchable_words`) as find_0
FROM `model_song` HAVING find_0""")
print millis() - start_time
Run Code Online (Sandbox Code Playgroud)

python mysql-python

7
推荐指数
2
解决办法
5248
查看次数

标签 统计

python ×2

cursor ×1

mysql ×1

mysql-python ×1

optimization ×1