SQL優化之建立索引六

2021-08-30 00:08:23 字數 460 閱讀 9002

第十八掌 決定使用全表掃瞄還是使用索引

和 所有的秘笈一樣,最後一招都會又回到起點,最後我們來討論一下是否需要建立索引,也許進行全表掃瞄更快。在大多數情況下,全表掃瞄可能會導致更多的物理磁 盤輸入輸出,但是全表掃瞄有時又可能會因為高度並行化的存在而執行的更快。如果查詢的表完全沒有順序,那麼乙個要返回記錄數小於10%的查詢可能會讀取表 中大部分的資料塊,這樣使用索引會使查詢效率提高很多。但是如果表非常有順序,那麼如果查詢的記錄數大於40%時,可能使用全表掃瞄更快。因此,有乙個索 引範圍掃瞄的總體原則是:

1)對於原始排序的表 僅讀取少於表記錄數40%的查詢應該使用索引範圍掃瞄。反之,讀取記錄數目多於表記錄數的40%的查詢應該使用全表掃瞄。

2)對於未排序的表 僅讀取少於表記錄數7%的查詢應該使用索引範圍掃瞄。反之,讀取記錄數目多於表記錄數的7%的查詢應該使用全表掃瞄。

總結

SQL優化之建立索引一

基於索引的sql語句優化之降龍十八掌 塵封往事 引用功能被關閉了。前言 客 服業務受到sql語句的影響非常大,在規模比較大的局點,往往因為乙個小的sql語句不夠優化,導致資料庫效能急劇下降,小型機idle所剩無幾,應用服 務器斷連 超時,嚴重影響業務的正常執行。因此,稱低效的sql語句為客服業務的 ...

SQL優化之建立索引二

降龍十八掌 第一掌 避免對列的操作 任何對列的操作都可能導致全表掃瞄,這裡所謂的操作包括資料庫函式 計算表示式等等,查詢時要盡可能將操作移至等式的右邊,甚至去掉函式。例1 下列sql條件語句中的列都建有恰當的索引,但30萬行資料情況下執行速度卻非常慢 select from record where...

SQL優化之建立索引五

第十四掌 使用基於函式的索引 前面談到任何對列的操作都可能導致全表掃瞄,例如 select from emp where substr ename,1,2 sm 但是這種查詢在客服系統又經常使用,我們可以建立乙個帶有substr函式的基於函式的索引,create index emp ename su...