不要浪费时间进行分析。时间总是在数据库操作中。尽可能少做。仅插入的最小数量。
三件事。
一。不要一遍又一遍地选择“日期”,“主机名”和“人”维度。将所有数据一次提取到Python字典中并在内存中使用。不要重复进行单例选择。使用Python。
二。不要更新。
具体而言,请勿执行此操作。这是不好的代码,有两个原因。
cursor.execute("UPDATE people SET chats_count = chats_count + 1 WHERE id = '%s'" % person_id)
用简单的SELECT COUNT(*)FROM …代替。从不更新以增加计数。只需使用SELECT语句计算行数即可。[如果无法使用简单的SELECT COUNT或SELECT COUNT(DISTINCT)来完成此操作,则将丢失一些数据-数据模型应始终提供正确的完整计数。永不更新。]
和。切勿使用字符串替换来构建sql。完全傻了。
如果由于某种原因SELECT COUNT(*)
速度不够快(首先进行基准测试,然后再执行任何la脚操作),则可以将计数结果缓存在另一个表中。在所有负载之后。做一个SELECT COUNT(*) FROM whatever GROUP BY whatever
并将其插入到计数表中。不要更新。曾经
三。使用绑定变量。总是。
cursor.execute( "INSERT INTO ... VALUES( %(x)s, %(y)s, %(z)s )", {'x':person_id, 'y':time_to_string(time), 'z':channel,} )