-->FROM子句中包含多個(gè)表的情況下,選擇記錄條數(shù)最少的表作為基礎(chǔ)表 -->解析WHERE子句是自下而上的 過濾條件要有順序 -->ORACLE會(huì)將'*'轉(zhuǎn)換成列名 -->DELETE會(huì)在rollback segment中存放可恢復(fù)信息,可以試試TRUNCATE -->COMMIT會(huì)釋放:1.rollback segment 2.被程序語句獲得的鎖 3.redo log buffer -->把Alias前綴于每個(gè)Column上可以減少解析的時(shí)間 -->ORACLE解析sql語句時(shí)會(huì)把小寫的字母轉(zhuǎn)換成大寫的再執(zhí)行 -->在索引列上使用NOT會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描 -->在索引列上進(jìn)行運(yùn)算會(huì)停止使用索引轉(zhuǎn)而執(zhí)行全表掃描 -->使用'>=',而不是'>' -->where子句中'!='、'||'、'+'等符號(hào)會(huì)破壞索引 -->IN的效率很低,IN子句將執(zhí)行一個(gè)內(nèi)部的排序和合并 -->EXIST查詢更為迅速 -->對(duì)于兩個(gè)索引列,UNION比OR效率更高 -->IS NULL會(huì)破壞索引 -->DISTINCT,UNION,MINUS,INTERSECT,ORDER BY等都帶有SORT功能,會(huì)耗費(fèi)資源 -->多個(gè)索引列時(shí)盡量使用第一個(gè)索引列 -->盡量用 UNION ALL代替UNION -->不要用TO_NUMBER()之類的函數(shù)改變索引列的類型。 -->對(duì)于字符類型的索引列盡量寫成:col = '123' 而不是 col = 123,后者會(huì)被解析為TO_NUMBER(EMP_TYPE)=123 -->適當(dāng)?shù)牡胤绞褂眠m當(dāng)?shù)年P(guān)鍵字:HAVING會(huì)在檢索出所有記錄之后對(duì)結(jié)果集進(jìn)行過濾 能使用WHERE解決時(shí)不要用HAVING -->索引也需要維護(hù),INSERT,DELETE,UPDATE會(huì)因索引而做出更多次I/O -->重構(gòu)索引是必要的:ALTER INDEX <INDEXNAME> REBUILD <TABLESPACENAME> [ONLINE] |
|