看板 Database 關於我們 聯絡資訊
大家好 小弟今天遇到一個非常奇怪的情況 我建立一個新的TABLE 欄位只有一個ID 把rownum放進ID INSERT 五百萬筆資料 也就是TABLE內有ID 1~ ID 5000000 再建立一個INDEX ON ID 接著測試 SELECT ID FROM TABLE WHERE ID=435323 發現執行計劃居然是FULL TABLE SCAN 此時再建立UNIQUE INDEX ON ID 再下一次剛剛的SQL發現執行計劃就走UNIQUE INDEX了 因為這是新的TABLE應該不會有需要analyze的問題.. 我覺得這是一個非常基本的情況..不知為何沒使用INDEX? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.65.163.29
kobedisel:id column type is? 09/24 22:45
iFEELing: 關鍵字 "events 10053" 弄懂這個你就有答案了 09/24 22:48
bohei:kobedisel大,我試了varchar,number都有此情形 09/24 22:52
bohei:iFEELing,我馬上去看,謝謝! 09/24 22:52
kobedisel:iFEELing 大大也是高手,event 10053會產生會解讀 09/25 22:24
kobedisel:基本上以cbo的db,你就可以知道oracle為何那麼走 09/25 22:27
kobedisel:有幾會的話是否可以跟ifeeling交流一下 09/25 22:28
bohei:不好意思,不知道iFEELing大會不會再看這篇..想再請教一下 09/26 16:24
bohei:今天我又試了一次普通的index,Oracle居然採用了,我懷疑是不 09/26 16:25
bohei:是我上次建錯table,想請問我文章說的那種情形,會有可能發生 09/26 16:25
bohei:嗎? (id都不重複,建立非uniuqe的index卻不採用) 09/26 16:26
kobedisel:一般來說按照你建的資料筆數,與資料看起來並無重複的 09/26 17:56
kobedisel:不管是建unique or normal index按照你的query來說 09/26 17:57
kobedisel:應該都是會走index的,除非你where 條件有欄位型態轉換 09/26 17:58
kobedisel:不然按照這樣的比數跟資料分布狀態oracle應沒道理走full 09/26 17:59
kobedisel:table scan,而且你也不是用bind variable的方式執行 09/26 17:59
bohei:嗯...那我懷疑是我當初建立index時下錯table了.. 09/26 18:01
bohei:雖然走了一條冤枉路,但學到很多,謝謝樓上幾位大大 09/26 18:01
kobedisel:不過當你覺得oracle應該走什麼plan實際上卻不走的話 09/26 18:04
kobedisel:就可以使用event 10053去看為何,一般來說我都是用 09/26 18:05
kobedisel:oradebug比較多,我比較習慣,印象中alter session set 09/26 18:05
kobedisel:event 應該也可以,上網查一下就有,看個人習慣 09/26 18:06
kobedisel:而最常用的event就2個 10046 10053這兩個會了,基本上 09/26 18:07
kobedisel:大半部分的效能難題都可以解了 09/26 18:07
kobedisel:最後推薦你我常看的網路文章就是大陸的老熊跟蓋國強 09/26 18:10
kobedisel:這兩個都是oracle ace都很強一個程式強另一個系統熟 09/26 18:10
kobedisel:有空可以多多看看這兩人文章或是書,對dba很有幫助的 09/26 18:11
bohei:好的!! 謝謝k大 09/26 18:19