Oracle 起步日記(22) SQL調優

2021-06-04 03:08:04 字數 938 閱讀 8346

索引

在db中,索引建立的目的就是為了避免對錶的掃瞄,以此減少大量的i/o操作,從而提高系統的效能

建立索引的一些規律:

表的主鍵和外來鍵必須要有索引

對經常與其他表進行連線的表的連線字段應該建立索引

經常出現在where子句中的字段應該建立索引

小字段應該建立索引

復合索引的建立需要經過仔細分析,盡量考慮用單字段索引代替

使用乙個索引訪問多行資料,在唯一索引上使用索引範圍掃瞄的情況是在where中使用了範圍操作符

建立索引

create unique index student_id_index on student(id);

使用set autotrace traceonly顯示語句執行計畫,此語句顯示執行計畫而不真正執行,它會大大減少優化時間,不過可以用來分析,用set autorace off結束執行計畫的顯示,切換回正確執行語句的方式

如執行select * from student where id > 100;如下圖可以看到索引掃瞄的訪問模式為index range scan

其實還有全索引掃瞄,和全表掃瞄,全索引就是index full scan,全索引掃瞄的情況是其查詢出的資料必須從索引中可以直接得到

sql語法調優

調優sql的目的是避免沒有必要的全表掃瞄,避免沒有效率的查詢

1)  避免在索引欄位中使用is null 和 is not null(全表掃瞄)

可以將null補成有效值,比如學生學號無法為負數,則可用 sno >= 0

2)  盡可能不採用「!=」(全表掃瞄)

索引只能告訴有什麼樣的資料存在於表中

3)  函式變化(全表掃瞄)

針對條件字段進行函式運算會造成全表掃瞄,其實對函式進行一些變換即可,如下

where id * 2 > 2 可改為 where id > 2/2

Oracle 起步日記(10) 程序檢測

終於看到了資料庫狀態監測了 乙個寒假被我悲催的揮霍過去了 不太爽 總之 加油 資料庫狀態監測,需要dba監測的主要有與資料庫建立的會話,資料檔案,控制檔案,重做日誌檔案,物件等 任何乙個連線都會用到資料庫的後台程序,一般常用的後台程序有dbwr lgwr smon pmon ckpt arch re...

Oracle 起步日記(2) 表空間管理

今天看第二章 是資料庫物件管理 首先 資料庫物件,是表,檢視,約束,儲存過程,觸發器之類的 書上有提到表空間一詞,表空間就是用來儲存這些資料庫物件滴 建立表空間物件 3種建立方式 1 autoallocate 自動分配 create tablespace t1 datafile e t1 1.dbf...

Oracle 起步日記(7) 觸發器

觸發器是被隱含執行的儲存過程 在為某物件建立觸發器時,首先要保證物件不屬於sys使用者 因為不可對sys擁有的物件建立觸發器 1 建立before觸發器 create or replace trigger tr fmodify student before update on student beg...