不要浪费时间进行分析。时间总是在数据库 *** 作中。尽可能少做。仅插入的最小数量。
三件事。
一。不要一遍又一遍地选择“日期”,“主机名”和“人”维度。将所有数据一次提取到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。完全傻了。
如果由于某种原因
SELECTCOUNT(*)速度不够快(首先进行基准测试,然后再执行任何la脚 *** 作),则可以将计数结果缓存在另一个表中。在所有负载之后。做一个
SELECTCOUNT(*) 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,} )
SQL永不更改。值必然会更改,但是SQL永远不会更改。这要快得多。切勿动态构建SQL语句。决不。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)