資料庫優化之一(索引,分割槽,語句改寫)

2021-10-07 20:02:46 字數 1462 閱讀 5624

oracle 採用兩種訪問表中記錄的方式:

語法:create [unique] index index_name on table_name(column_list) [tablespace tablespace_name];

(1)唯一索引;設定某列為主鍵時會在該列新增乙個唯一索引,根據該主鍵查詢時不會再遍歷整張表,唯一索引適合建立在值唯一的列

alter table teacher add constraint pk_tno primary key on (tno);

(2) btree索引(普通索引),適合建立在重複值比較少的列上

create index i_tname on teacher(tname);

(3) 位圖索引,適合建立在重複值較多的列上

create bitmap index i_tjob on teacher(tjob);

(4) 反向鍵索引,適合建立在類似序列增長的列上,可防止某個資料塊訪問過熱(比如批量插入)

create index i_tseq on teacher(tseq) reverse

(5)函式索引

create index i_tname2 on teacher(upper(tname))

(6) 組合索引(可以分開建立)

create bitmap index i_g_j on teacher(tgender,tjob)

建立索引的原則:

頻繁搜尋的列

經常排序、分組的列

經常連線的列

指定單獨的表空間

資料量小、增刪改資料特別頻繁、增刪改效能要求高於查詢的表不適合建立索引

把表中資料分成若干部分,並儲存在不同的位置(適合在千萬級以上資料的表建立分割槽)

為什麼要做表分割槽?

改善查詢效能

使表更容易管理

便於備份和恢復

提高資料安全性

分割槽型別:

範圍分割槽:將資料基於範圍對映到不同分割槽,常用於時間

partition p1 values less than (to_date(『2018-09-01』,『yyyy-mm-dd』))

列表分割槽:某列的值只有幾個,採用列表分割槽

partition p2 values(『深圳』)

雜湊分割槽:不指定分割槽條件,資料庫自動將資料平均分配(根據列的hash值)

復合分割槽:做了乙個分割槽後,每個分割槽裡面再次做分割槽

給帶分割槽的表建立索引,需要在建立語句後面加local關鍵字

create bitmap index i_sale_date on sale(sale_date) local;

delete

from emp e

where e.rowid >

(select

min(x.rowid)

from emp x where x.emp_no = e.emp_no)

;

12 優化資料庫 優化SQL語句 索引

第 一 優化索引 sql語句 分析慢查詢 第二 設計表的時候嚴格按照資料庫的設計正規化來設計資料庫 第三 我們可以加上redis快取,將經常被訪問到的資料,但是不需要經常變化的資料放入至redis快取伺服器裡面 第四 還可優化硬體,在硬體層面,我們可以使用更好的一些硬碟 固態硬碟 使用一些磁碟陣列技...

資料庫(4)索引優化和SQL語句優化

這一段時間一直在學習關係型資料庫,準備寫乙個小專題來總結一下這一段時間的學習結果。話說資料庫優化一直是sql型資料庫的熱門問題,包括從網路i o方面,從硬碟i o方面,從cpu計算方面等等很多手段,都可以對資料庫進行優化。這篇文章主要總結了如何建立合適的索引提公升查詢速度,如何通過優化sql提公升語...

資料庫索引 索引優化

二 三星索引 三 合適設計理想索引 謂詞簡單謂詞和複雜謂詞 where字句中的每個條件稱為乙個謂詞。過濾因子 描述了謂詞的選擇性,即表中滿足謂詞條件的記錄行數所佔的比例 過濾因子 ff 結果集的數量 錶行的數量 平均過濾因子 1 不同列值的數量 索引片及匹配列 乙個索引定義乙個索引片,如果where...