免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6369 | 回复: 5
打印 上一主题 下一主题

2张各有30多万数据的表,求差集的查询(mysql) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-05 14:16 |只看该作者 |倒序浏览
CREATE TABLE `ip` (
  `country` varchar(4) default NULL,
  `province` varchar(8) default NULL,
  `city` varchar(8) default NULL,
  `startip` varchar(15) NOT NULL,                    //字符篡类型的ip  例如  192.168.0.1
  `endip` varchar(15) NOT NULL,
  `detail` varchar(128) NOT NULL,
  `organise` varchar(64) default NULL,
  `int_ip1` bigint(20) default NULL,                 //十进制的 例如  273091293
  `int_ip2` bigint(20) default NULL,
   PRIMARY KEY  (`startip`,`endip`,`detail`),
   KEY `int_ip1` (`int_ip1`),
   KEY `int_ip2` (`int_ip2`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk

表的结构如上, 2个表结构相同.  有 ip 和 ip_new  2张表 (数据各30多万),  ip表比ip_new少近千条.  写个查询  找出 ip_new 和 ip 表的差集.

求最佳查询语句.

[[i] 本帖最后由 lxy9805287 于 2008-1-5 14:34 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2008-01-05 15:01 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2008-01-05 16:25 |只看该作者
select ip_new.* from ip_new left join ip on ip_new.int_ip1=ip.int_ip1 and ip.int_ip is NULL

论坛徽章:
0
4 [报告]
发表于 2008-01-05 16:55 |只看该作者
3楼仁兄的语句经过分析要执行 32万 * 10 也就是 300多万次.  希望有更优化的办法


继续期待

[ 本帖最后由 lxy9805287 于 2008-1-5 16:57 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-01-06 20:59 |只看该作者
如果你在int_ip1上加了索引的话,是很快的。

论坛徽章:
0
6 [报告]
发表于 2008-01-07 09:30 |只看该作者
原帖由 wildlily980 于 2008-1-5 16:25 发表
select ip_new.* from ip_new left join ip on ip_new.int_ip1=ip.int_ip1 and ip.int_ip is NULL


这个你EXPLAIN一下很快的。
除非你任何索引都没有。
create index f_int_ip on ip(int_ip);
然后再EXPLAIN 一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP