自作聰明的開發

2021-09-08 22:48:56 字數 838 閱讀 7840

近日檢視資料庫執行較長的語句。發現我們這邊的開發者真是厲害。順手拈來就是hint。

開發以為僅僅要走索引就是快的,並且剛好知道index hint能夠強制走索引。所以就用上了。但是走的是bitmap index full scan,把整個索引都掃瞄了,然後依據索引的點陣圖轉化(bitmap conversion to rowids)成rowid,再依據索引的rowid和表的rowid一一相應。從表中取得資料(table access by index rowid)。

既然是從索引中的全部rowid找到表中的全部的資料,為啥不直接掃瞄整個表,直接掃瞄整個表不是更快嗎?事實上oracle也是非常聰明的。我把index  hint去掉之後。走得是全表掃瞄。這就對了。

讀索引是單塊讀,回表也是單塊讀。一次的單塊讀和多塊讀時間上是幾乎相同的,顯然多塊讀一次掃瞄的塊數很多其它。

我們把錶當成是一本字典,通過拼音檢索或者通過部首檢索,可以很高速的定位某乙個字在哪頁。這就好比是索引掃瞄,通過索引。能高速定位你檢索的資料在表中的位置。

假設我們要找全部的字,假如有1w個字,顯然,每個字都通過檢索的方式,我們要找1w次。

如果我們一頁一頁的找。如果一頁有20個字。總共500頁,我們要找500次就能找到1w個字。

顯然。找500次要比找1w次要快非常多。

至於優化的話就簡單了。去掉index hint就能夠了。假設表大的話就加並行就ok了。

自作聰明的開發

近日檢視資料庫執行較長的語句,發現我們這邊的開發人員真是厲害,不懂裝懂的本領真高。開發以為只要走索引就是快的,而且剛好知道index hint可以強制走索引,所以就用上了。可是走的是bitmap index full scan,把整個索引都掃瞄了,然後根據索引的點陣圖轉化 bitmap conver...

Android開發 更 聰明 的申請許可權方式

在android6.0以後,很多許可權需要動態申請,只有在使用者點同意後,我們才能使用對應api,因此,正確申請許可權就顯得很重要。通常我們使用這種方式來判斷許可權狀態 private static boolean isgranted final string permission 複製 但是用這種...

聰明的妻子

聰明的妻子總是會在愛人面前扮演著不同角色。當愛人不開心時,她可以像個大姐姐般地去安慰他,直到他的嘴角露出幾許笑容 當愛人生病時,又像母親一樣地把他抱在懷裡輕輕拍打他的雙肩,並給他煲上一鍋好湯,讓他暖暖的 不過當自己有什麼委屈時,又會像個小孩子般在愛人面前哭泣,以博取他的呵護和安慰。1 老公是拿來愛的...