被顛覆的資料庫常識

wangzh3發表於2007-03-10

他們在組織oracle的培訓,培訓前先發了幾個問題給要參加的人,讓他們不參考資料的情況下回答一下,摸摸底.他們就拿過來給我看了一下,如下是問題.很多人的答案都應該差不多.實際上不是那麼準確的.所以要顛覆一下認識吧.

Q1:VARCHAR2和CHAR兩種資料型別的區別?

對於這個問題,絕大多數的資料和絕大多數的人都會這麼回答:varchar2更節約空間.因為char(n)無論實際存了幾個字元,佔用的空間都是n個字元.varchar2不同.實際用了幾個,然後再加一個指示長度.

正確的答案:varchar2(n)和char(n)的區別如,varchar2(n) 當n<2000的時候,定義的是多少,無論實際存了幾個字元,佔用的空間就是n.當大於2000的時候,會按照實際佔用的加1.varchar2比char效率高(這個是為什麼,不知道.oracle的文件只是這麼說,沒有提出理論或者分析.)

Q2:索引對於表的查詢和更新操作在效能上的不同影響

大多數人的理解:利用索引,查詢會快,更新和刪除會慢.

正確的理解應該是:利用索引,查詢不一定會快.理由如下: 一個資料量很小的表.可能只佔用了一個block.如果利用所引,需要讀索引的block,再讀資料的block.所以多讀了一個block.可能就會慢.或者讀取一個很大的表的全部資料.利用所引需要讀所有的索引block加所有的資料block.不如全表掃描不用索引,不需要讀索引block.

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/47869/viewspace-903709/,如需轉載,請註明出處,否則將追究法律責任。

相關文章