SQL 優化 概念篇 之 選擇性和基數
最近在研究 Christian Antognini 關於 Troubleshooting Oracle Performance 這本書, 當翻閱到後面時, 感覺到對前面的部分概念又模糊了。談到優化,如果你概念都摸稜兩可的話,就是一件很悲哀的事情了,或許你認為在真實環境中實戰幾次就可以理解概念了。我個人認為, 實戰是加深概念理解的最直接的方法,作為一個經驗尚淺的DBA,我決定在概念理解上多下工夫,因此有必要對概念作一個小小的記錄 (古人云:最淡的墨水勝過最強的記憶!!)
(1) 選擇性 (selectivity ) : 一個操作過濾的記錄的比例, 是一個介於 0 和 1 之間的數值。
(2) 基數 (cardinality) : 一個操作所返回的記錄的條數。
以num_rows 表示被處理的記錄數, 這 cardinality 與 selectivity 之間存在以下關係
cardinality = selectivity × num_rows
對於一般的操作, 其選擇性是通過 查詢語句返回的記錄數 除以 表中儲存的記錄數 得到, 但是在實際生產環境中,一般的操作是完全不能滿足我們的需求的, 如果我們在語句中 使用了 group by 和 聚合函式(eg: sum max min avg), 我們返回的記錄數肯定就不是我們過濾的記錄數了, for example :
以下是我的一個測試表,表中的記錄數為6 如下:
SQL> select count(*) from book_test;
COUNT(*)
----------
6
通過 sum 聚合函式對測試表進行操作:
SQL> select sum(price) from book_test;
SUM(PRICE)
----------
316
以上操作 我們返回行為1 其實我們的選擇性應該為 6/6 = 1 而不是我們的一般演算法 1/6
談了這麼多,可能你認為,選擇性是幹什麼的? 有用嗎? 其實一個操作對應的選擇效能夠幫助你確定那條訪問路徑是最優的訪問路徑。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8117479/viewspace-671321/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【TUNE_ORACLE】檢視每個列的選擇性和基數SQL參考OracleSQL
- SQL最佳化必懂概念(一):基數SQL
- sql優化之邏輯優化SQL優化
- 基於優先數系選擇分壓電阻
- SQL 選擇SQL
- SQL優化之統計資訊和索引SQL優化索引
- CSS 選擇器效能優化CSS優化
- 深入理解 CSS:基礎概念、註釋、選擇器及優先順序CSS
- Oracle SQL優化之sql tuning advisorOracleSQL優化
- SQL優化之limit 1SQL優化MIT
- MySQL之SQL優化技巧MySql優化
- SQL-基礎語法-選擇查詢SQL
- jQuery基礎——樣式篇 (選擇器)jQuery
- Redis基礎篇(五)AOF與RDB比較和選擇策略Redis
- SpringBoot基礎篇之重名Bean的解決與多例項選擇Spring BootBean
- MySQL之SQL語句優化MySql優化
- Android效能優化篇之服務優化Android優化
- hadoop之yarn(優化篇)HadoopYarn優化
- SQL效能第1篇:關係優化SQL優化
- 選擇排序-演算法及優化排序演算法優化
- Django ORM效能優化之count和len方法的選擇(非常詳細推薦乾貨)DjangoORM優化
- Linux 效能優化之 CPU 篇 ----- 套路篇Linux優化
- mysql優化篇(基於索引)MySql優化索引
- 十七、Mysql之SQL優化查詢MySql優化
- MySQL之SQL優化詳解(二)MySql優化
- MySQL之SQL優化詳解(三)MySql優化
- MySQL之SQL優化詳解(一)MySql優化
- CSS之選擇器及其優先順序CSS
- Linux 效能優化之 cup 篇Linux優化
- Linux 效能優化之 IO 篇Linux優化
- OGG複製程式延遲高,優化方法二(存在索引),SQL選擇不好的索引優化索引SQL
- HCNP Routing&Switching之BGP路由屬性和優選規則路由
- 微課sql最佳化(1)、基礎概念介紹SQL
- MySQL優化之系統變數優化MySql優化變數
- 袋鼠雲數棧基於CBO在Spark SQL優化上的探索SparkSQL優化
- 神奇的 SQL 之效能優化 → 讓 SQL 飛起來SQL優化
- 《MySQL慢查詢優化》之SQL語句及索引優化MySql優化索引
- MySQL優化篇(一),我可以和麵試官多聊幾句嗎?——SQL優化流程與優化資料庫物件MySql優化資料庫物件
- Python基礎05 縮排和選擇Python