- 相關(guān)推薦
筆試題(SQL tuning )
SQL tuning 類(lèi)
1 列舉幾種表連接方式
等連接、非等連接、自連接、外連接(左、右、全)
2 不借助第三方工具,怎樣查看sql的執(zhí)行計(jì)劃
I) 使用Explain Plan,查詢(xún)PLAN_TABLE;
EXPLAIN PLAN
SET STATEMENT_ID=’QUERY1′
FOR
SELECT *
FROM a
WHERE aa=1;
SELECT operation, options, object_name, object_type, ID, parent_id
FROM plan_table
WHERE STATEMENT_ID = ‘QUERY1′
ORDER BY ID;
II)SQLPLUS中的SET TRACE 即可看到Execution Plan Statistics
SET AUTOTRACE ON;
3:如何使用CBO,CBO與RULE的區(qū)別
IF 初始化參數(shù) OPTIMIZER_MODE = CHOOSE THEN –(8I DEFAULT)
IF 做過(guò)表分析
THEN 優(yōu)化器 Optimizer=CBO(COST); /*高效*/
ELSE
優(yōu)化器 Optimizer=RBO(RULE); /*高效*/
END IF;
END IF;
區(qū)別:
RBO根據(jù)規(guī)則選擇最佳執(zhí)行路徑來(lái)運(yùn)行查詢(xún)。
CBO根據(jù)表統(tǒng)計(jì)找到最低成本的訪問(wèn)數(shù)據(jù)的方法確定執(zhí)行計(jì)劃。
使用CBO需要注意:
I) 需要經(jīng)常對(duì)表進(jìn)行ANALYZE命令進(jìn)行分析統(tǒng)計(jì);
II) 需要穩(wěn)定執(zhí)行計(jì)劃;
III)需要使用提示(Hint);
使用RULE需要注意:
I) 選擇最有效率的表名順序
II) 優(yōu)化SQL的寫(xiě)法;
4 如何定位重要(消耗資源多)的SQL
使用CPU多的用戶(hù)session
SELECT a.SID, spid, status, SUBSTR (a.program, 1, 40) prog, a.terminal,a.SQL_TEXT,
osuser, VALUE / 60 / 100 VALUE
FROM v$session a, v$process b, v$sesstat c
WHERE c.statistic# = 12 AND c.SID = a.SID AND a.paddr = b.addr
ORDER BY VALUE DESC;
5 如何跟蹤某個(gè)session的SQL
利用TRACE 跟蹤
ALTER SESSION SET SQLTRACE ON;
COLUMN SQL format a200;
SELECT machine, sql_text SQL
FROM v$sqltext a, v$session b
WHERE address = sql_address
AND machine = ‘&A’
ORDER BY hash_value, piece;
6 SQL調(diào)整最關(guān)注的是什么
檢查系統(tǒng)的I/O問(wèn)題
sar-d能檢查整個(gè)系統(tǒng)的iostat(IO statistics)
7 說(shuō)說(shuō)你對(duì)索引的認(rèn)識(shí)(索引的結(jié)構(gòu)、對(duì)dml影響、對(duì)查詢(xún)影響、為什么提高查詢(xún)性能)
索引有B-TREE、BIT、CLUSTER等類(lèi)型。ORACLE使用了一個(gè)復(fù)雜的自平衡B-tree結(jié)構(gòu);
通常來(lái)說(shuō),在表上建立恰當(dāng)?shù)乃饕,查?xún)時(shí)會(huì)改進(jìn)查詢(xún)性能。但在進(jìn)行插入、刪除、修改時(shí),同時(shí)會(huì)進(jìn)行索引的修改,在性能上有一定的影響。
有索引且查詢(xún)條件能使用索引時(shí),數(shù)據(jù)庫(kù)會(huì)先度取索引,根據(jù)索引內(nèi)容和查詢(xún)條件,查詢(xún)出ROWID,再根據(jù)ROWID取出需要的數(shù)據(jù)。由于索引內(nèi)容通常比全表內(nèi)容要少很多,因此通過(guò)先讀索引,能減少I(mǎi)/O,提高查詢(xún)性能。
8 使用索引查詢(xún)一定能提高查詢(xún)的性能嗎?為什么
通常,通過(guò)索引查詢(xún)數(shù)據(jù)比全表掃描要快.但是我們也必須注意到它的代價(jià).
索引需要空間來(lái)存儲(chǔ),也需要定期維護(hù), 每當(dāng)有記錄在表中增減或索引列被修改時(shí),
索引本身也會(huì)被修改. 這意味著每條記錄的INSERT,DELETE,UPDATE將為此多付出4,5 次的磁盤(pán)I/O. 因?yàn)樗饕枰~外的存儲(chǔ)空間和處理,那些不必要的索引反而會(huì)使查詢(xún)反應(yīng)時(shí)間變慢.
使用索引查詢(xún)不一定能提高查詢(xún)性能,索引范圍查詢(xún)(INDEX RANGE SCAN)適用于兩種情況:
基于一個(gè)范圍的檢索,一般查詢(xún)返回結(jié)果集小于表中記錄數(shù)的30%宜采用;
基于非唯一性索引的檢索
9 綁定變量是什么?綁定變量有什么優(yōu)缺點(diǎn)?
綁定變量是指在SQL語(yǔ)句中使用變量,改變變量的值來(lái)改變SQL語(yǔ)句的執(zhí)行結(jié)果。
優(yōu)點(diǎn):使用綁定變量,可以減少SQL語(yǔ)句的解析,能減少數(shù)據(jù)庫(kù)引擎消耗在SQL語(yǔ)句解析上的資源。提高了編程效率和可靠性。減少訪問(wèn)數(shù)據(jù)庫(kù)的次數(shù), 就能實(shí)際上減少ORACLE的工作量。
缺點(diǎn):經(jīng)常需要使用動(dòng)態(tài)SQL的寫(xiě)法,由于參數(shù)的不同,可能SQL的執(zhí)行效率不同;
10 如何穩(wěn)定(固定)執(zhí)行計(jì)劃
【筆試題SQL tuning】相關(guān)文章:
SQL tuning筆試題09-18
2017年sql考試試題05-13
迅雷2011.10.21筆試題08-10
中興2015筆試題08-02
SQL優(yōu)化大全08-26
oracle的sql語(yǔ)句06-18
海爾04年筆試題及答案07-31