免费注册 查看新帖 |

Chinaunix

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

查询条件is null为何比一般查询条件慢很多 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-19 15:18 |只看该作者 |倒序浏览
我在一个多表上的查询,某个带索引的字段
where ID is null
假设返回100条记录,
用时可能要3秒,
同样查这个字段,
用ID<100
假设也返回100条记录
但用时可以提高一个量级,在0.3秒左右
请问高手这是为啥
难道数据库对is null时用不上索引了?

[ 本帖最后由 neil_young 于 2005-12-21 16:48 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2005-12-19 15:27 |只看该作者

多表联结时,联结条件越多,速度越慢啊

顺便再请教一个问题吧。
我有4张表,进行inner join 连接时,
a
inner b
  on a.ID1=b.ID1
inner join c
  on c.ID2=b.ID2
inner join d
  on d.ID3=c.ID3 and d.ID4=b.ID4

当联结d表时,我发现加了这个and d.ID4=b.ID4 这个条件后,整个查询的速度反而大大的下降了,
去掉这个条件速度上升了好几倍,
而有没有这个条件,最好联结形成的数据结构是一样的。
请问为什么

论坛徽章:
0
3 [报告]
发表于 2005-12-19 15:59 |只看该作者
where ID is null 这个语法是判断条件是id为空的而用ID<100是判断条件id小于100的根本就不是一个语句怎么能一样啊

论坛徽章:
0
4 [报告]
发表于 2005-12-19 16:15 |只看该作者
ID是自增量么?如果是的,MYSQL会自动建立相关INDEX。

论坛徽章:
0
5 [报告]
发表于 2005-12-19 16:30 |只看该作者
楼上两位来灌水的吗?

论坛徽章:
0
6 [报告]
发表于 2005-12-21 16:49 |只看该作者
大家都没碰到过吗

论坛徽章:
0
7 [报告]
发表于 2005-12-21 21:49 |只看该作者
你好,我测试过了,速度并没有区别。

论坛徽章:
0
8 [报告]
发表于 2005-12-21 21:52 |只看该作者
如果你想知道是否使用到了索引,使用:
EXPLAIN SELECT *
FROM `tablename`
WHERE ....

论坛徽章:
0
9 [报告]
发表于 2005-12-22 08:56 |只看该作者
3.23.40版本的手册中有这么一句
在"How MySQL Uses Indexes"章节中:
Searching using column_name IS NULL will use indexes if column_name is an index.
本身你的假设未必成立,请将实际情况描述清楚吧。

论坛徽章:
0
10 [报告]
发表于 2005-12-22 13:17 |只看该作者
原句是这样的
select         
COUNT(*)
        from
            suites s
        inner join instances i
            on s.SuiteID=i.SuiteID
        inner join testcases t
            on t.SuiteID=s.SuiteID
        left join testcase_instances ti
            on t.TestCaseID=ti.TestCaseID
        where
            ti.TestCaseID is null

经过我分析,可能是因为Ti.TestCaseID is null 这个条件只有在left join连接时,
不匹配才会出现的,所以可能比别的条件都要慢。这个联结产生的总记录数是400万。

我上面这个查询的结果虽然是零条纪录,但耗时和我不加条件返回结果400万条记录数
所耗时间是一致的3s左右。
如果我把条件改成 ti.TestCaseID<0
同样返回零条记录,那么耗时几乎是0.00秒

[ 本帖最后由 neil_young 于 2005-12-22 13:19 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP