oracle中sql語句or
Ⅰ oracle中的集合操作符的查詢效率和and、or相比,有什麼不同么,為什麼
集合操作符與and、or相比沒太大差別,要嚴格來說集合操作符效率略低與and、or;
因為集合操作符是為了簡化編程人員的,在執行sql時,會進行詞法分析、語法分析、語句轉義,會把集合操作符轉義成and、or語句。這點差別不明顯,相比較而言程序人員面對多條件時首選集合操作符,比一大推and
……or
要省事。
Ⅱ oracle語句查詢 or和and
and優先順序大於or。
加括弧則優先執行or,後執行and;不加括弧,會先執行and,再執行or,所以查詢結果不同。舉例:
資料庫存在數據:
Thomas Carter
WilliamCarter
ThomasKing
執行:SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William')
AND LastName='Carter'
結果為:
ThomasCarter
WilliamCarter
執行:SELECT * FROM Persons WHERE FirstName='Thomas' OR FirstName='William'
AND LastName='Carter'
結果為:
ThomasCarter
WilliamCarter
ThomasKing
(2)oracle中sql語句or擴展閱讀:
ORACLE資料庫特點:
1、完整的數據管理功能:
(1)數據的大量性
(2)數據的保存的持久性
(3)數據的共享性
(4)數據的可靠性
2、完備關系的產品:
(1)信息准則---關系型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;
(2)保證訪問的准則
(3)視圖更新准則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化
(4)數據物理性和邏輯性獨立准則
3、分布式處理功能:ORACLE資料庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式資料庫功能了,一個ORACLE分布式資料庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關系型產品構成。
4、用ORACLE能輕松的實現數據倉庫的操作。
參考資料:網路-Oracle資料庫
Ⅲ oracle中如何優化多句Or的條件。。。
要優化or查詢,只要你知道一點:
sql or查詢是左截斷的,也就是指要or符合條件,就不再走後面的or checking了
明白了這個,唯一的優化方案就是
把越能命中的or語句放到最前面,增加前面減少後面的or 邏輯判斷
Ⅳ oracle sql 請問用什麼可以替代or,這樣查的效率特別慢
含有"IN"、"OR"的Where子句常會使用工作表,使索引失效;如果不產生大量重復值,可以考慮把子句拆開;拆開的子句中應該包含索引。
select count(*) from stuff where id_no in('0','1')(23秒)
可以考慮將or子句分開:
select count(*) from stuff where id_no='0'
select count(*) from stuff where id_no='1'
然後再做一個簡單的加法,與原來的SQL語句相比,查詢速度更快。
Ⅳ 寫sql語句中or和(+)
前面的一樣...
from
a LEFT JOIN b
ON ( a.bizsn=b.bizsn or a.movsn=b.bizsn
and a.curid=b.addid )
這樣行么?
Ⅵ oracle 查詢的sql語句特別慢,是什麼原因,是or特別慢嗎,用什麼優化,急急急!!!
把查詢計劃的內容發出來,你這一大堆代碼誰能看出來啥啊。看你的代碼這么長,條件那麼多,語句用了函數,很多低效的or,not in等操作,另外還用了group by,order by,左右連接等等,如果表數據量很大的話,你這個語句性能不好是預料中的事情。如果你這條語句無法優化,建議從調整表結構角度考慮
Ⅶ oracle資料庫sql語句翻譯
CREATE OR REPLACE PROCEDURE -- 建立或替換存儲過程
loadLOBFromBFILE_proc -- 存儲過程名
(TID IN NUMBER,rfilename in varchar2,rfiledir in varchar2,upmessage out varchar2)
-- 參數列表
-- 參數名 參數類型 參數數據類型
-- TID IN NUMBER
-- rfilename in varchar2
-- rfiledir in varchar2
-- upmessage out varchar2
-- IN 代表輸入參數 OUT 代表輸出參數
AS -- 關鍵字
Dest_loc BLOB; -- 定義變數DEST_LOC的數據類型為BLOB
Src_loc BFILE; -- 定義變數SRC_LOC的數據類型為BFILE
BEGIN
INSERT INTO BLOBTEST(ID,ABLOB) VALUES (TID, EMPTY_BLOB()) RETURN ABLOB INTO DEST_LOC;
-- 向BLOBTEST表插入數據,EMPTY_BLOB()是個系統函數 返回空的BLOB
-- RETURN ABLOB INTO DEST_LOC 是將剛插入的數據中的 ABLOB列中的數據放到DESC_LOC變數中
Src_loc := BFILENAME(rfiledir, rfilename);
-- BFILENAME 是個函數 返回 BFILE類型數據 參數1是文件所在目錄 參數2是文件名。
Ⅷ SQL語句的寫法——關於OR和AND(oracle)
select * from table where x<>0 and abs(a-b/x*100)>1
Ⅸ oracle sql 用什麼可以替代or,這樣查詢特別慢
可以用union,比如select 內容 from user where name='張三' union select 內容 from user where name='李四',相當於select 內容 from user where name='張三' or name='李四' ,因為union會用到索引,不知道你這個表有沒有索引,表的數據多大?
Ⅹ ORACLE 如何標示「或」的關系,sqlserver中貌似是OR,來表示的,在oracle中應該用什麼表示
OR是SQL的關鍵字,所以不管是SQL SERVER,還是oracle,都是用OR來表示或的
不是你寫錯了,而是你後面的那個or xx is null應該是你table裡面有超多這樣的紀錄,所以就出現了很多條,可以通過括弧來改變and or的次序
譬如
select * from [表名] where name = 'xx' and (password is null or xx is null )