1樓:匿名使用者
運用的是oracle 中的雜湊連線,/*+ */ 相當於**中的編譯指令,要求oracle按照指定的某種軌則執行,而不是使用預設設定use_hash(a,b)是其一一種
當記憶體能夠提供足夠的空間時,雜湊(hash)連線是oracle優化器通常的選擇。雜湊連線中,優化器根據統計資訊,首先選擇兩個表中的小表,在記憶體中建立這張表的基於連線鍵的雜湊表;優化器再掃描表連線中的大表,將大表中的資料與雜湊表進行比較,如果有相關聯的資料,則將資料新增到結果集中。 當表連線中的小表能夠完全cache到可用記憶體的時候,雜湊連線的效果最佳。
雜湊連線的成本只是兩個表從硬碟讀入到記憶體的成本。 但是,如果雜湊表過大而不能全部cache到可用記憶體時,優化器將會把雜湊表分成多個分割槽,再將分割槽逐一cache到記憶體中。當表的分割槽超過了可用記憶體時,分割槽的部分資料就會臨時地寫到磁碟上的臨時表空間上。
因此,分割槽的資料寫磁碟時,比較大的區間(extent)會提高i/o效能。oracle推薦的臨時表空間的區間是1mb。臨時表空間的區間大小由uniform size指定。
當雜湊表構建完成後,進行下面的處理: 1) 第二個大表進行掃描 2) 如果大表不能完全cache到可用記憶體的時候,大表同樣會分成很多分割槽 3) 大表的第一個分割槽cache到記憶體 4) 對大表第一個分割槽的資料進行掃描,並與雜湊表進行比較,如果有匹配的紀錄,新增到結果集裡面 5) 與第一個分割槽一樣,其它的分割槽也類似處理。 6) 所有的分割槽處理完後,oracle對產生的結果集進行歸併,彙總,產生最終的結果。
當雜湊表過大或可用記憶體有限,雜湊表不能完全cache到記憶體。隨著滿足連線條件的結果集的增加,可用記憶體會隨之下降,這時已經cache到記憶體的資料可能會重新寫回到硬碟去。如果出現這種情況,系統的效能就會下降。
當連線的兩個表是用等值連線並且表的資料量比較大時,優化器才可能採用雜湊連線。雜湊連線是基於cbo的。只有在資料庫初始化引數hash_join_enabled設為true,並且為引數pga_aggregate_target設定了一個足夠大的值的時候,oracle才會使用雜湊邊連線。
hash_area_size是向下相容的引數,但在oracle9i之前的版本中應當使用 hash_area_size。當使用ordered提示時,from子句中的第一張表將用於建立雜湊表。
2樓:
oracle hint,新增相應的hint語句可以干預sql的執行方式或者執行計劃
3樓:
請度娘 hint,就幫你到這了
oracle,sql語句中/*+*/是什麼技術
4樓:康熙轉世
樓主您好
hints,可以指定索引來讓oracle查詢更有效率,優化器完全可以按照自己的意思執行。
oracle本身是個很聰明的人,一般情況下他自動會選擇一條自認為最優的查詢方式,大多數情況下確實這種查詢是最優的,但有些時候並不是,為了提高效率可以自己執行執行計劃
oracle是用什麼語言?是sql語言嗎?
5樓:匿名使用者
oracle使用的是sql語言。
結構化查詢語言(structured query language)簡稱sql,是一種特殊目的的程式語言,內是一種資料庫查詢和程
容序設計語言,用於存取資料以及查詢、更新和管理關聯式資料庫系統;同時也是資料庫指令碼檔案的副檔名。
結構化查詢語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者瞭解具體的資料存放方式,所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為資料輸入與管理的介面。結構化查詢語言語句可以巢狀,這使它具有極大的靈活性和強大的功能。
2023年10月,美國國家標準協會對sql進行規範後,以此作為關係式資料庫管理系統的標準語言(ansi x3. 135-1986),2023年得到國際標準組織的支援下成為國際標準。不過各種通行的資料庫系統在其實踐過程中都對sql規範作了某些編改和擴充。
所以,實際上不同資料庫系統之間的sql不能完全相互通用。
6樓:
oracle,是用pl/sql,它可以
相容baisql99, tsql只有相容sql99的那部分可以用,其他是du
zhi不能用的.
pl/sql是oracle對標準資料dao庫語言的擴充套件,procedure language.
pl/sql可以用來編內寫儲存過程,還有一些資料庫管理的功能.其他的tsql,informix sql 也都符合sql99標準,只是編寫儲存過程的語法各不一樣.
就是說,如果不編寫儲存過程,只進行查/插/刪/改 4種功能,那麼各家sql基本就是相容的容.
7樓:匿名使用者
可以,登陸sqlplus就可以使用sql語句
8樓:
sql 是必須會的。
但是oracle的後面也有物件導向的
9樓:匿名使用者
好象聽說的是 tsql 語句吧 在oracle 裡也可以使用
具體也不太清楚
oracle的sql語句中如何處理『&』符號
10樓:爵爺
『&』符號在sql中有特殊含義,所以在sql中想要寫入&,需要特殊處理。如下sql語句就不能正確執行:sql> select 'a&b' from dual;處理方法:
用oracle的字串處理函式chr處理。chr(38)表示 &符號如:select chr(38) from dual;結果:
&sql> select 'a'||chr(38)||'b' from dual;結果:a&b其他不能處理的特殊符合,也用類似的方式處理。如果不知道該特殊符號的值,可以呼叫ascii函式處理如:
select ascii('&') from dual;結果:38
linushellif語句中是什麼意思
if為判斷語句,判斷某個東西是否達到設定的條件。1,格式為 if 語句格式 if 條件 then command else command fi 別忘了這個結尾 2,if的三種條件表示式 if command then if 函式 then 命令執行成功,等於返回0 比如grep 找到匹配 執行失敗...
程式設計語句中INPUT語句屬於什麼語句
在qbasic 全稱quick basic,簡稱qb 裡就有這個語句,就是輸入語句input,如版input hello qbasic是高 級語權言,但比較原始了,如果要學習基礎的話還是從c語言開始吧 如比較出名的turbo c 祝你成功 滿意請採納 c語言中的input是什麼意思 input屬於p...
SQL語句中as的作用sql語句中as的作用?
有點像重新命名的意思 比如select count as num from table 這句話的意思是,table表裡面有多少條記錄,並把這個記錄的個數賦值給一個臨時變數num 到時候就可以從num中獲得記錄個數 如果不用as,是不是很難獲取記錄個數 同理,像樓上各位仁兄說的,起別名,可以這麼理解我...