Python SQLite3 UPDATE性能

时间:2018-01-12 21:31:17

标签: python python-3.x sqlite database-performance

为什么WHERE index = ?的运行速度比WHERE prop_link = ?

想象一下下表:

姓名:地址

列:idx(INTEGER PRIMARY KEY),full_street(TEXT),prop_link(TEXT)

长度:1亿行

现在想象以下两行代码。

cursor.execute("UPDATE addresses SET full_street = ? WHERE prop_link = ?", (street_var, property_link_var))

cursor.execute("UPDATE addresses SET full_street = ? WHERE idx = ?", (street_var, idx_var))

过去几天我不得不经常处理这张桌子。

有几天我被困了,因为我的代码冻结在' WHERE prop_link =?'排队甚至等了一个小时,它不会解冻,我也无法弄清楚原因。

当我尝试使用' WHERE idx =?'令人惊讶的是,我的代码开始在几分之一毫秒内完成。

为什么?我查看了https://sqlite.org/queryplanner.htmlhttps://sqlite.org/optoverview.html以及https://docs.python.org/3/library/sqlite3.html#connection-objects,也许我错过了,但我无法找到为什么加速如此激烈。

我的猜测是某种类型的哈希映射或二进制搜索,但我希望能够更好地理解它,以便我可以编写高性能代码(1亿行)。

0 个答案:

没有答案