1.
列舉幾種表連線方式
內連線、外連線(左外連線,右外連線,全連線),等值鏈結,非等值鏈結,自連線
2.
不借助第三方工具,怎樣檢視
sql的執行計畫
使用explain plan,檢視plan_table
explain plan
setstatement_id=』wlp_test』 ---其中wlp_test自定義的名稱,方便後面檢視plan_table
使用set autotrace on
select * from table(dbms_xplan.display);
3.
如何使用
cbo,cbo
與rule
的區別如果optimizer_mode=choose(9i
的預設值)時,如果有統計資訊就使用
cbo,沒有就使用
rbo。
all_rows
是10g
以及後續版本的預設值,它表示使用
cbo來解析目標
sql;
區別:rbo
使用簡單的分級規則來選擇執行計畫,而
cbo則根據最低成本來選擇執行計畫。
rbo一旦執行計畫出了問題很難對其做調整。甚至
sql的寫法和
sql中物件出現的先後順序都能影響執行計畫的選擇。
oracle 10gr2及以後版本不再支援基於規則(rule)的優化器。
4.
如何定位重要
(消耗資源多)的
sqlselect sql_textfrom v$sql where disk_reads > 1000 or executions >0 andbuffer_gets/executions >30000;
5.
如何跟蹤某個
session
的sql
selectsid,serial# from v$session where sid = (select sid from v$mystat where rownum =1);
execdbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);
execdbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,'');
6.
sql調整最關注的是什麼
檢視該sql
的響應時間,即
responsetime
(db blockgets/consistent gets/physical reads/sorts(disk);
7.
說說你對索引的認識
(索引的結構、對
dml影響、對查詢影響、為什麼提高查詢效能
)使用分為
b樹索引,位圖索引,復合索引,雜湊索引,位圖連線索引,分割槽索引,反鍵索引,基於函式的索引。索引通常會提高
select/update/delete
的效能,降低
insert
的效能。因為查詢通過索引時,會先通過索引查詢需要行的
rowid
,讓後通過
rowid
把需要的塊讀入記憶體,而全表掃瞄則是把所有的行都讀入記憶體,然後再查詢需要的行,所以索引可以提高查詢效能。
8.
使用索引查詢一定能提高查詢的效能嗎
?為什麼
不一定,但是索引就是為了提高效能而建立的,如果查詢中索引沒有提高效能,只能說用錯了索引,或者場合不對。
9.
繫結變數是什麼
?繫結變數有什麼優缺點
?繫結變數是指在
sql文字中使用的變數,改變變數的值來得到不同的查詢結果。優點:使用繫結變數來減少硬解析,避免
cpu爭用,降低磁碟讀,避免
sharedpool latch
的爭用。繫結變數的缺點就是,不能使用
histogram
(直方圖)。
10.
如何穩定(固定
)執行計畫
a.使用
sql profile
來穩定執行計畫
(10g
以及以前版本)
b.使用
spm來穩定執行計畫(
11g以及以後版本)
11.
和排序相關的內存在8i和
9i分別怎樣調整,臨時表空間的作用是什麼
oracle 8i
中sort_area_size/sort_area_retained_size
決定了排序所需要的記憶體,如果排序操作不能在
sort_area_size
中完成,
就會用到
temp
表空間;
oracle 9i
中如果workarea_size_policy=auto時,
排序在pga
內進行,
通常pga_aggregate_target
的1/20
可以用來進行
disk sort;
如果workarea_size_policy=manual時,
排序需要的記憶體由
sort_area_size
決定在執行
order by/groupby/distinct/union/create index/index rebuild/minus
等操作時
,如果在
pga或
sort_area_size
中不能完成
,排序將在臨時表空間進行
(disk sort),
臨時表空間主要作用就是完成系統中的
disk sort.
12.
存在表t(a,b,c,d),
要根據字段
c排序後取第21—
30條記錄顯示,請給出
sqla.select * from(select t1.*,rownum rn from (select * from t order by c) t1) where rn between21 and 30;
b.select * from(select * from t order by c) where rownum<31
minus
select * from (select * from t order by c)where rownum<20;
封裝類的面試題
integer a1 1 integer a2 1 system.out.println a1 a2 true integer a3 128 integer a4 128 system.out.println a3 a4 false integer封裝類中已經定義了乙個integercache,in...
Java String 類面試題
本文裝置自 字串物件是一種特殊的物件.string類是乙個不可變的類.也就說,string物件一旦建立就不允許修改 string類有乙個對應的string池,也就是 string pool.每乙個內容相同的字串物件都對應於乙個pool裡的物件.1 看下面一段 string s new string ...
java String類面試題
1.判斷定義為string型別的s1和s2是否相等 string s1 abc string s2 abc system.out.println s1 s2 true system.out.println s1.equals s2 true 2.下面這句話在記憶體中建立了幾個物件?string s1...