论坛首页 综合技术论坛

下面的两个sql语句那个效率更高

浏览 2649 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-09-14  
第一个

UPDATE stat_ip_20110912 a join ip_list  b on a.ip>=b.startip and a.ip <=b.endip SET a.operator=b.type,a.province=b.province ;

第二个

UPDATE stat_ip_20110912 a,ip_list  b SET a.operator=b.type,a.province=b.province where a.ip>=b.startip and a.ip <=b.endip

b表是一个ip的基础表32w数据 a表是一个访问ip表每天50w数据

运行两个都需要的时间很长怎么优化谢谢
   发表时间:2011-10-24  
标准写法(为你的第二种):
UPDATE stat_ip_20110912 a,ip_list  b
SET a.operator=b.type,a.province=b.province
WHERE a.ip>=b.startip and a.ip <=b.endip



关键是2张表用于关联的字段是否有索引可用,以及数据类型是否一致

建议索引字段及组合:
stat_ip_20110912(ip)
ip_list (startip,endip)

请提供执行计划信息:
SELECT a.operator,a.province
FROM stat_ip_20110912 a,ip_list  b
WHERE a.ip>=b.startip and a.ip <=b.endip\G






#****************************************#
MySQL技术及运维自动化网:www.mysqlops.com

新浪微博账号:http://weibo.com/mysqlops
#****************************************#
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics