第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Oracle SQL中的!=與<>?

Oracle SQL中的!=與<>?

一只萌萌小番薯 2019-02-06 21:06:00
SELECT * FROM test_t WHERE ID != 1;與SELECT * FROM test_t WHERE ID <> 1;的執(zhí)行結果一樣,有啥區(qū)別呢?能不能使用索引?謝謝!那select * from t where name in ('a', 'b');和select * from t where name not in ('a', 'b');是否可以使用索引呢? “in 和 not in 都可以使用索引的,但是如果name字段有很多值,那么not in的執(zhí)行時間應該稍微長一點,因為它返回的值比較多?!边@里的意思是說not in相當于多個where <>的條件?但如果這樣豈不應該更快?因為條件限定得更嚴密? "補充:如果name的值比較少的話,in和not in條件嚴密性差不多,如果name值比較多的時候,in的嚴密性更高,索引都是按照順序排好的,相等的情況只有一種,不等的情況有很多種。"那如果是這種NOT IN的情況比較多時,還有別的方法替換么?謝謝!
查看完整描述

2 回答

?
慕慕森

TA貢獻1856條經(jīng)驗 獲得超17個贊

第一個問題:
這兩個都是不等于符號,沒有什么區(qū)別,如果這個字段有索引,都可以使用的。
第二個問題:
in 和 not in 都可以使用索引的,但是如果name字段有很多值,那么not in的執(zhí)行時間應該稍微長一點,因為它返回的值比較多。
補充:如果name的值比較少的話,in和not in條件嚴密性差不多,如果name值比較多的時候,in的嚴密性更高,索引都是按照順序排好的,相等的情況只有一種,不等的情況有很多種。
如果你('a', 'b')這些值是放在另外一個表里面,還有not exsits可以替換,如果是常量的話,貌似也只能這么寫了。

查看完整回答
反對 回復 2019-02-27
?
MMTTMM

TA貢獻1869條經(jīng)驗 獲得超4個贊

我怎么記得oracle只能用<>呢。如果能用,應該是沒有區(qū)別。
不管怎樣,“不等于”判斷是不能用索引的。
道理很簡單:索引即使穿上了“樹”這個馬甲,其本質(zhì)上還是對排序數(shù)據(jù)的二分查找。
“不等于”判斷無法確定數(shù)據(jù)順序,也就無法使用二分查找算法。所以就無法使用索引了。
其他不能使用索引的情況也是這個道理。

查看完整回答
反對 回復 2019-02-27
  • 2 回答
  • 0 關注
  • 780 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號