当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL查询效率问题解答

MySQL查询效率问题解答

2018年02月15日  | 移动技术网IT编程  | 我要评论

最近在使用python在MySQL中读写数据时遇到了,两个程序插入查询语句格式相同,却效率相差约百倍的问题。

原因是MySQL字段类型为字符串,使用字符串数据条件查询比使用数值型数据效率高的很多,个人估算有百倍,

而我两个程序就使用了两种数据类型,花了两天才找出效率慢的问题。后来去搜了一下相关问题,看到有人做出了

图文对比,效率对比很直观。

教训就是,虽然数据库可以对程序中的数据格式进行隐式转换,但会带来巨大的效率差异,所以以后对数据库

进行查询操作时,字段是什么类型,所用的查询数据格式也应该是这种类型。

下面是我的程序:

程序1:

predictions是个生成器,里面数据是数值型

格式为:((432424,2343423,2.4343),(565645,656343,0.43354))
sql_update="update features_pos set ra=%s where src=%s and dist=%s "
for u,v,p in predictions:
    counter=counter+1
    db.update_record(sql_update,(p,u,v))
    logging.warning("%s--############----%s-VS-%s############"% (counter ,u,v)
程序2:
db.get_fetchall 函数返回的是元祖类型,数据是unicode字符串型
格式为:({"src":"453523332","dist":"435353243"},{"src":"647564434","dist":"54543535"}))
sql_update="update features_pos set cn=%s where src=%s and dist=%s "
counter = 0
for item in db.get_fetchall(query_src_dist):
    counter = counter + 1
      db.update_record(sql_update,(CN,item["src"],item["dist"]))
    logging.warning("[%s]############----%s-VS-%s############"% (counter,item["src"],item["dist"]))

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网