資料庫調優 2 索引

2022-04-25 17:05:54 字數 1486 閱讀 1678

一、建立索引技巧

①,應該選擇資料量大的表。

②,應該選擇使用頻繁的字段上建立索引,如經常查詢的字段,排序的字段,用於where子句作為條件判斷的字段。經常用在連線的列。

③,應該選擇重複值較小的字段上建立所以,例如使用者表 應該在使用者id上建立索引,而不是使用者的位址如省份或者性別。

---①,當修改效能遠遠大於檢索效能時,不應該建立索引。

②,對於那些定義為blob資料型別的列不應該增加索引。

二、索引的不足

,索引佔物理空間

②,對錶的資料進行insert,delete,時索引需要動態維護,會影響維護速度。

三、索引失效

①,沒有 where 子句。 索引的目的是過濾掉一些不需要檢索的資料。

②,使用 is null 和 is not null,not in ,not exist 如: select * from emp where ename is null. 那麼如果在ename上的索引會失效.

③,使用 like 『%%』 進行模糊查詢,%在前

④,where子句中使用不等於操作。不等於操作包括:<>, !=, 

not colum >= ?, not colum <= ? 可以使用 or 代替不等於操作。

⑤,比較不匹配資料型別

⑥,where 子句中使用函式

如果沒有使用基於函式的索引,那麼 where 子句中對存在索引的列使用函式時,會使優化器忽略掉這些索引。例如:

select * from staff where trunc(birthdate) = '01-may-82';

但是把函式應用在條件上,索引是可以生效的,把上面的語句改成下面的語句,就可以通過索引進行查詢。

select * from staff where birthdate < (to_date('01-may-82') + 0.9999);

注意:對於 min, max 函式,oracle 仍然使用索引。

⑦,等於和範圍索引不會被合併使用

select emp_id, emp_m, salary_q ... from emp where job='manager' and deptno>10

job 和 deptno 都是非唯一索引,這種條件下 oracle 不會合併索引,它只會使用第乙個索引。

資料庫調優 2

3.2 基本表設計優化 在基於表驅動的資訊管理系統中,基本表的設計規範是第三正規化。第三正規化的基本特徵 是非主鍵屬性只依賴於主鍵屬性。基於第三正規化的資料庫表設計具有很多優點 一是能消除 冗餘資料 節省磁碟儲存空間 二是有良好的資料完整性限制 基於主外來鍵的參照完整限制 和基於主鍵的實體完整性限制...

2 資料庫調優二 count調優

create table user test count id int primary key not null auto increment,name varchar 45 age int,email varchar 60 birthday date engine innodb insert in...

剖析資料庫效能調優技術之索引調優

剖析資料庫效能調優技術之索引調優 2008 1 28 9 37 00 by iulu 一 概述 隨著資料庫在各個領域的使用不斷增長,越來越多的應用提出了高效能的要求。資料庫效能調優是知識密集型的學科,需要綜合考慮各種複雜的因素 資料庫緩衝區的大小 索引的建立 語句改寫等等。總之,資料庫效能調優的目的...