文章插圖

文章插圖
sql 的優化大多數情況下是索引的優化,那么,什么情況下該創建索引,什么情況下不創建索引呢,回答這個問題之前,先來了解一下基數和選擇性吧 。
基數
在 Oracle 數據庫中,某一列的唯一鍵的數量叫做基數 。
舉個例子,比如一張表中有個 sex 字段,它的值只有 “男” 和 “女” 兩種情況,那我們就說這一列的基數是2 。
我們可以通過如下語句來查詢一個字段的基數 。
select count(distinct deptno) as num from emp舉個例子,在一個有10000行數據的表中,sex 字段基數為2,他的數據分布可能為9999行是男的,1行是女的,這是分布不均衡的現象 。而在身份證字段中,它的基數是10000,每一行都是一個不同的身份證號碼,這是分布均衡的現象 。
我們可以通過 group by 語句來查看數據的分布情況 。
select deptno,count(1) from emp group by deptno一般來說,當返回表中 5% 以內的數據的時候,就應該走索引 。超過 5% 的數據就要使用全表掃描 。但是這個說法太絕對了,就像上面查詢 sex 字段時,查詢男性時候超過了 5%,查詢女性時候小于 5%,那這個字段需不需要創建索引呢?
這個時候,就需要引入選擇性的概念了 。
選擇性
基數與表的總行數的比值就是選擇性 。
我們可以通過以下 sql 語句來查詢列的選擇性 。
select count(distinct deptno)/count(1) as selectivity from emp【Oracle性能優化 oracle語句優化工具】PS:文中使用了數據量較少的表來舉例子,是因為數據清晰直觀,方便大家理解 。而在實際情況中,只有大表才會產生性能問題 。如果一個表里只有十幾二十條數據,也就無所謂優化了 。
- web壓力測試和性能測試工具 Web壓力測試
- oracle服務器類安裝教程 oracle服務端安裝步驟
- 關鍵詞優化簡易 優化關鍵詞具體要怎么做
- jmeter性能測試實戰 pdf jmeter性能測試實驗報告
- 前端頁面性能優化有哪些 前端的優化
- cdn技術原理 CDN優化
- 處理器單核性能是什么意思 處理器單核有什么用
- win7提高性能設置 win7 性能優化
- mysql好還是oracle好 mysql和oracle哪個性能更好
- jmeter性能測試分析 jmeter性能測試實驗報告
