Oracle SQL中的!=与<>

SELECT*FROMtest_tWHEREID!=1;与SELECT*FROMtest_tWHEREID<>1;的执行结果一样,有啥区别呢?能不能使用索引?谢谢!那se... SELECT * FROM test_t WHERE ID != 1;

SELECT * FROM test_t WHERE ID <> 1;
的执行结果一样,有啥区别呢?能不能使用索引?谢谢!
那select * from t where name in ('a', 'b');和select * from t where name not in ('a', 'b');是否可以使用索引呢?

“in 和 not in 都可以使用索引的,但是如果name字段有很多值,那么not in的执行时间应该稍微长一点,因为它返回的值比较多。”
这里的意思是说not in相当于多个where <>的条件?但如果这样岂不应该更快?因为条件限定得更严密?

"补充:如果name的值比较少的话,in和not in条件严密性差不多,如果name值比较多的时候,in的严密性更高,索引都是按照顺序排好的,相等的情况只有一种,不等的情况有很多种。"
那如果是这种NOT IN的情况比较多时,还有别的方法替换么?谢谢!
展开
 我来答
百度网友ddd0aca8b
2010-09-19 · TA获得超过176个赞
知道小有建树答主
回答量:178
采纳率:0%
帮助的人:143万
展开全部
我怎么记得oracle只能用<>呢。如果能用,应该是没有区别。
不管怎样,“不等于”判断是不能用索引的。
道理很简单:索引即使穿上了“树”这个马甲,其本质上还是对排序数据的二分查找。
“不等于”判断无法确定数据顺序,也就无法使用二分查找算法。所以就无法使用索引了。
其他不能使用索引的情况也是这个道理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1aqaq2
2010-09-19 · TA获得超过167个赞
知道答主
回答量:72
采纳率:0%
帮助的人:12.6万
展开全部
两个没有什么大的区别,
可以通用哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uvvvv
2010-09-19 · TA获得超过349个赞
知道小有建树答主
回答量:944
采纳率:0%
帮助的人:355万
展开全部
<>这个见过,!=这个没见过 呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
airson79
推荐于2018-02-22 · TA获得超过835个赞
知道小有建树答主
回答量:767
采纳率:100%
帮助的人:536万
展开全部
第一个问题:
这两个都是不等于符号,没有什么区别,如果这个字段有索引,都可以使用的。
第二个问题:
in 和 not in 都可以使用索引的,但是如果name字段有很多值,那么not in的执行时间应该稍微长一点,因为它返回的值比较多。
补充:如果name的值比较少的话,in和not in条件严密性差不多,如果name值比较多的时候,in的严密性更高,索引都是按照顺序排好的,相等的情况只有一种,不等的情况有很多种。
如果你('a', 'b')这些值是放在另外一个表里面,还有not exsits可以替换,如果是常量的话,貌似也只能这么写了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式