我有一个具有数百万条记录的表,并且越来越多的工作线程同时访问。锁定整个表会大大降低性能。是否可以使用一条语句来获取使用pymysql影响的行的ID?内置函数还是创意SQL?
Pymysql(Python 3)的基本示例:
cursor.execute('UPDATE the_table SET checked = 1 WHERE checked = 0 LIMIT 1')
mysql.commit()
id = ??
SQL会更改一行,但不会返回任何内容来检查受影响的行。尽管有文档建议,在这种情况下 cursor.lastrowid 不适用于UPDATE。有什么办法查看刚刚受影响的行吗?
我已经看到几个人问类似的问题,这使我相信这不可能。我可能会遇到这种错误吗?锁定是解决此问题的唯一方法吗?