免费注册 查看新帖 |

Chinaunix

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

不等于 的 sql优化 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-04-01 12:15 |只看该作者 |倒序浏览
讨论下这个问题
两个表
都是id pid 两列
我要查找id 相同的 pid只差,或者a表中没有id的b表中pid的值
select  b.id,IF( a.pid  IS NULL , b.pid, b.pid - a.pid) pids
  from  a right join  b on a.id = b.id
   where a.pid <> b.pid OR a.pid IS NULL
        order by pids desc limit 1000;
        很慢(测试发现真正耗时间的是 a.pid <> b.pid)
有没有更好的办法变通下

论坛徽章:
0
2 [报告]
发表于 2010-04-02 11:56 |只看该作者
个人愚见:
此表是什么存储类型?索引使用的是BTREE索引还是HASH索引?如果使用的是HASH索引的话,可能会较慢。

论坛徽章:
0
3 [报告]
发表于 2010-04-02 21:23 |只看该作者
not equal sql is not easy to tune. u can use "right/left join + is null" to filter

论坛徽章:
0
4 [报告]
发表于 2010-04-06 15:46 |只看该作者
为myisam
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP