Oracle 提示經常出現的錯誤寫法

2021-09-09 05:45:49 字數 2007 閱讀 5894

在 oracle 中,可以通過為語句新增hint (提示) 來實現干預優化器優化的目的。hint的使用類似於注釋,

/*+hint1 hint2 / 是在 * 後面加上乙個 + 表示hint 多個hint鍵使用乙個或者多個空格進行分割,另外如果oracle發現hint 語法有錯誤,oracle不會報錯,只是把 / * */ 裡的內容當做注釋而已。所以此處就列舉一些hint出錯的情況,僅供參考。

「*」 和「+」 之間不能有空格

-- 建立測試表

create

table test_tab(

userid number(6)

notnull

,name varchar2(8)

);create

index ind_userid on test_tab(userid)

;insert

into test_tab values(1

,'aa');

insert

into test_tab values(2

,'bb');

insert

into test_tab values(3

,'cc');

insert

into test_tab values(4

,'dd');

insert

into test_tab values(5

,'ee');

insert

into test_tab values(6

,'ff');

insert

into test_tab values(7

,'gg');

insert

into test_tab values(8

,'hh');

commit

;

如果我們希望查詢使用全表掃瞄可以使用full這個 hint強制全表掃瞄,如果 * 和 + 之間有空格,如下:

select

/* + full(test_tab) */

*from test_tab where userid =

3;

如果這樣寫 oracle 只能是認為/* 和 */ 之間的是注釋,語句無法生效,查詢執行計畫中 hint 沒有生效;

如果表指定了別名,那麼hint 中也要使用別名。

仍然使用如上的測試表,測試語句如下:

select

/*+ full(test_tab) */

*from test_tab a where a.userid =

3;

如果不使用別名,那麼執行計畫中hint不會生效。

使用巢狀查詢時,內層的別名在外側是無法使用的,所以如果hint中使用了內層的別名,也是無效的。

select

/*+ full(b idx_userid1) */ a.userid from test_tab a where a.userid in

(select b.userid from test_tab b where a.userid = b.userid)

;

多個提示之間分割不能使用『 , 』 必須使用空格

如下查詢語句希望是走全表掃瞄,結果發現hint失效

select

*from test_tab a where a.userid =

3;

另外,一些很常見的hint形式,比如:

/*+ parallet(t,8) */

,/*+ index(t,t_idx) */

雖然當前沒有問題,但是標準的寫法應該是:

/*+ parallet(t 8) */

,/*+ index(t t_idx) */

select

*into b select

*from a;

使用ADO MySQL時經常出現的錯誤分析及總結

環境 windows xp sp2 delphi 7 myodbc 3.51 問題 在odbc中配置mysql資料來源 如hydro 完全正常,但是在d7中 1,使用adoconnection有問題。在配置其connectionstring時,如果選擇了資料來源hydro,在初始資料庫下拉框中也能夠...

Lnmp中nginx經常出現502錯誤解決方法

nginx 502多半的原因是資源不足或nginx配置的一些問題導致的,下面我來給提供了乙個利用nginx輪詢php服務池狀態然後進行相關處理,希望例子能幫助你解決問題。先從fastcgi配置入手 1.檢視fastcgi程序是否已經啟動nginx 502錯誤的含義是sock 埠沒被監聽造成的。我們先...

Linux 核心變更導致驅動經常出現的錯誤記錄

1 error cflags was changed in fix it to use ccflags y。解決方法 export kbuild nopedantic 1 解決方法 修改makefile中的 cflags 為 extra cflags 或 ccflags y 2 linux conf...