2011/11/15

[轉載] Index Scan vs Seek in SQL Server


FAQ : Index Scan Vs Seek in SQL Server

There are five logical/physical operators in SQL Server related to Index scan ,Index Seek and Table scan. 


(a) Table Scan

(b) Clustered Index Scan

(c) Clustered Index Seek

(d) Index Scan (Non- Clustered index Seek)

(e) Index Seek (Non- Clustered index Seek)


Table Scan 

Table Scan retrieves all rows from the table (if you have no WHERE Conditions). Basically, before returning the rows, it traverse through all data pages related to the table. If you have where condition, though it travel through all the pages only those rows are returned which satisfy the conditions. When you do not have Clustered index on the table it does a table scan. In other words, both Clustered Index Scan (clustered index is nothing but the data itself) and Table Scan are same because in both method system traverse through all the data pages. Generally, you should avoid table scan.


Clustered Index Scan

Clustered Index Scan is nothing but horizontally traversing though the clustered index data pages. Clustered Index Scan return all the rows from the clustered index (Clustered index is nothing but Data). If you have where condition , only the satisfying rows are returned, but system traverse through all the data pages of the clustered index. Both Table scan and Clustered Index Scan are generally considered to be bad. But at times like if the table is small contains only few rows table or clustered index scan may be good also


Clustered Index Seek

Clustered Index Seek traverse vertically right down to the Data page where the requested data is stored. Basically any seek is vertically traversing though the B-Tree structure (as we all know the index is stored in B-tree structure in sql server). System does a Seek when it find a useful index and generally its done for highly selective query.


Index Scan or Non-Clustered Index Scan

As already said, Scan is horizontal traversing of B-Tree data pages. But in this case it horizontally traverse though the Non-Clustered index available. Its not same as Clustered index scan or Table Scan. In SQL Server , while reading execution plan you can find only Index Scan not Non-Clustered Index Scan. But you must read Index Scan as Non-Clustered Index Scan.


Index Seek or Non-Clustered Index Seek

As already mentioned Seek is Vertical traversing of B-Tree to the data page. But in Index seek it vertical traversing of Non-Clustered Index. Generally, its considered as the best option for high selective query.


2011/11/09

BB 第廿週 結構檢查

免去了千六元在私家醫生的檢查下, 在政府醫院的檢查始終因為人數眾多, 素質自然下降. 尤其因內地產婦人數驚人, 害得許多有經驗的醫生也捱不了沉重的工作量下大量流失. 取而代之便是沒有或淺經驗的年輕醫生及助產士值班, 而且也是因為醫護人員不斷減少下, 排症輪候的時間也長了.

原先預約了十時診症作超聲波的結構性檢查, 但等多了差不多半小時才開始. 入到超音波室, 當值年輕的女醫生劈頭一句, 現在不要問問題, 隨後會另有醫生解釋給你聽, 我們唯有忍著, 短短的五分鐘中, 醫生不斷看但只不斷喃喃自語, 我們根本聽不到她說甚麽, 看她將那掃瞄器推上推下, 看似尋找甚麽, 但有沒甚發現, 因為太太關心較早前驗到的肌瘤會否影響產道, 最後還是開口問了. 那醫生極不願意下再作檢查, 推了幾推掃瞄器, 又說找不到肌瘤, 瞎猜胎盤大了可能拉開了而看不見, 總是說不影響...云云, 見著她的技術, 我們也不再追問了.

再見醫生時, 又是年輕的女醫生 , 像依書直說地交代檢查正常, 迴避太太那肌瘤問題, 但太太苦纏下得到三十七周時可再做一次超音波檢查會否影響順產....最後, 等下一次預約的日期後便打道回府.

---------------------------------------------------------------------

過了數月後, 據聞現在公立醫院因人手不足而取消了結構性檢查, 除非一些高齡產婦或曾流產的產婦外, 有需要的要自費出外找私家醫生做.

2011/11/08

「Pancake 仔」的由來



BB出世了四個多月後, 終於重拾寫Blog的動力, 因為想兒子將來可以看到老爸的文章, 令他對他的成長有多一份回憶.

星期日到教會時, 其中一位母親向我追問「Pancake仔」為何不是叫「Hotcake仔」. 我其實也沒有大關係, 反正這就是他了. 但對於其他人問到, 我還是樂意解說一下.

事緣因為當我知道太太懷了BB後, 到了差不多二十多週, 開始做一些所謂胎教時, 也不知怎樣稱呼「他」. 其後, 他母親的飲食也些改變了, 開始對某大美資快餐店的熱香餅狂熱起來, 幾乎每天早上也嚷著要吃, 但從前的她對此是沒有興趣的, 甚至有時因為過了早餐時間買不到而會向我生氣, 及後甚至買了材料自己整pancake. 所以推斷好像是肚裡的他想吃. 想起那不如用這個「Pancake仔」來稱呼他吧, 反正聽起了也挺可愛吧! 後來他對這個暱稱也喜愛, 當呼叫這個名時, 在媽媽肚裡的他也會有回應的.

但隨著他出世後, 起了名字後, 我也少了這樣稱呼他.

The Pillars of The Earth 玩後感


取名同名小說改編的, 我雖然沒有看過, 但吸引我買的原因主要因為版圖的畫風華麗, 而且有很多meeples 再配合原作故事的大教堂. 據說外形是取材於法國的聖母院.


上週第一次PoE玩board 版 + expansion(6人版) , 先前玩了幾次大概熟悉遊戲流程, 玩bsw版本己經覺得此game混合stone age及caylus的元素, 另加入了抽master builder 機制的隨機性. 但此機制劣勝於好. start player 作用主要只是在選工人上有優勢, 但對抽master builder沒有太大作用, 最多有只是重抽一次. 尤其是在遊戲後段, 重要的工匠咭極度罕有, 所擁有的金錢已足夠有餘, 雖然付出多一元, 但先抽出來的builder先行動的優勢下絕對可以彌補多花一元的代價, 而後抽出來的已沒有太多選擇, 所以少付錢未能平衡那個隨機性, 導致未能有策略的安排工作.

但到昨晚自己帶了5人版, 還是有很多細節規則不熟悉. 開始時由我作start player介紹遊戲, 基本流程是沒有問題, 但到了某些card 與該回合的event 出現時便有些矛盾. 例如privilege card中的Archbishop Thomas, 用作可以免去下週event帶來的影響. 但同一回合的event卻是取消下回合privilege card的效果. 這些細節之前玩時沒有遇到. 而且今次每人有大灑金錢去買工匠咭, 而且沒有省錢或送錢的privilege card, 加上幾乎每個event 也是負面影響. 幾次抽master builder 也排到最後, 辛苦經營下只能以石頭為主去取分.



以下是一些規則容易玩錯或遺留的: 



1.      當錢不夠付的時候, 以每1分換作2, 若欠單數的金額則round down處理, 即是若欠3元的話只需扣1
2.      當選擇2號的建築師當選取資源時, 是取市場(12)的資源, 而不是取資源的supply
3.      黑色工人只在當其中一張privilege card生效後才歸入該玩家手視為自己的工人而直至遊戲結束
4.      黑色的建築師當被抽出使用時, 是免費使用的, 而且黑色的成本計不需減一.若直至擁有該玩家的建築師被抽出時, 才計算當時的成本, 同時黑色的建築師需要抽離遊戲. 若外starting player也可以決定重抽而將黑色建築師放回入袋.
5.      放置privilege card的位置, 玩前需要分開持續生效的一堆(A), 一次性及即時生效是另一堆(B). A堆放在4, B堆放在9c.
6.      9d的海岸市場, 只賣不能買, 但沒有限制數量
7.      若沒有Woodcutter, 是不能木材
8.      若沒有Stonecutter, 是不能石頭
9.      若沒有Mortar Mixer, Mason是不能獲取分數, 並非另一張Mortar Mixer. 但另有一張privilege card Sally 可以跳過此限制
10.  有其中一個event (Shiring lures away master builders for its own Cathedral!)是即時從start player開始, 移走一個已放置的建築師. 另一event (A newtown wall must be built to protect the Cathedral!)則是下一回合只有兩個建築師, 若有5-6人玩時, 則只放一個建築師入袋, 另一個則準備放在後置的builder strip, 視乎抽出的建築師所放置的先後次序再決定這個建築師的次序

2011/07/13

Skywalker 何妨吟嘯且徐行: Alter Table Modify Column Syntax

Skywalker 何妨吟嘯且徐行: Alter Table Modify Column Syntax: "Table customer Column Name Data Type First_Name char(50) Last_Name char(50) Address char(50) City char(50) Country char(25) Birth_Dat..."

2011/01/18

BB第十五週: 唐氏檢產

昨天剛與太太到了東區醫院作了第三次檢查: 約見醫生看驗血報告, 唐氏綜合症度頸皮檢查(OSCAR) 結果是低風險1/5000及測BB心跳14X下, 年輕的女醫生(我想不夠三十歲, 大概是新入行)只報告了一句太太身體正常, 其他所問的無非是曾否懷孕, 流產或小產等基本問題後便完了, 沒有照超聲波.

之前一直關注可否在東區做結構檢查: 昨日從醫生時得悉五週後, 即廿週便會在此檢查後便釋懷, 因從友人得知政府做的與私家的一樣, 那便省了在私家醫生做檢查$1600.

另外看到告示版公布了產前講座的日期及時間, 原來免費的講座是不用預先登記, 只需攜帶回診白咭WALK-IN便可, 那醫院如何估計有多少人數參加!? 那豈非要當日提前來霸頭位?



BB 第十二週: 第二次作小產

忙碌一週後的週末早上起床後, 太太如廁後又發現有流啡現象, 隨即致電盧醫生, 但是沒人接聽, 爭扎好久決定到聖保祿的產前門診做檢查, 十時到達並已掛號後十一時回來, 但仍等了好久, 好像只有兩個醫生應診(至少等多了一小時, 連舞動全城也全輯看畢才獲接見), 然後問了一輪指定首次應診的問題, 甚麼"有沒藥物敏感", "是否第一胎", "有否小產流產"後, 便做了一次超聲波檢產, 幸好聽到了BB的心跳, 但沒有其他特別.  雖然那醫生已半頭花髮, 但從口吻及所問的問題, 令我覺得他仍像是生手見習醫生般, 連我們的預產期的時間也計錯, 隨後便說回家多休息.

因此之後, 太太便聽醫生建議多休息, 凡需活動多於一小時的全部推掉, 直至過了三個月後的初孕期為止.

2011/01/13

BB第十週: 驀然的悸動: 首次私家醫生檢查

一向以來我也覺得很多私家醫生都是只為賺錢, 而欠決醫德, 更諻論醫者父母心.

但經友人口碑介紹到了在尖沙嘴的診所的仁安醫生做了產檢, 令我對私家醫生改觀. 

該醫生雖然也很多病人輪候, 但不會因此降低對病人的診斷質素或態度, 給我的印象就是醫科教授般, 不斷將孕婦會出現的症狀深入淺出地解說, 最深刻的就是解釋預產期時:

「BB的預產期雖然定為第40週, 但是實際上的日期不是你們與我三人定的, 是由BB決定的(當然是講自然順產, 不是開刀剖腹生產)」, 多麽有權威的說法!

再後來照超聲波, 每個細緻的地方也指示及解釋給我們聽, 最令人感動的就是聽到及看見BB的很快而有規率的心跳聲及其頻率, 原來每分鐘有170多次, 足足是一個正常成年人兩倍多的速度, 到那一刻我也真正感受到一個小生命在媽媽的母體內孕育著, 那頻密不息的悸動, 賜我們生命的神我們感謝您!

從黑白的螢光幕中, 透過科技的幫助, 我們與BB有了第一次的接觸, 多麽感動及振奮的情景!

BB, 我們隔著肚皮說愛你!

BB的心跳聲

BB在母腹中的橫切面, 看著多麽的可愛

明朝那些事兒(伍) - 帝國飄搖

More about 明朝那些事兒(伍)

前半部份講述萬曆年間文官集團徐楷, 高拱及張居正爭奪首輔之位, 後半部主要描述出兵援朝鮮抗日之戰. 張居正的改革惠澤萬民, 但當中攝政萬曆時成為獨裁者, 實際明朝的統治者. 後段深入敍述援朝之戰時名將李舜臣, 李如松等.  對書中兩段文字最為深刻:

描述張居正為人
「你還很年輕,將來你會遇到很多人,經歷很多事,得到很多,也會失去很多,但無論如何,有兩樣東西,你絕不能丟棄,一個叫良心,另一個叫理想。」 


形容中華民族

所以豐臣秀吉很樂觀——實在沒有悲觀的理由。


    然而他錯了,即使他運用經濟學原理,把明朝的各種情況輸入電腦,用模型公式證明自己必定能贏,他也一定會輸。


    因為他不懂得中國人。


    幾百年後的1937年,日本人決定開戰,因為他們認為自己不可能輸,當時的日本比中國有錢,士兵比中國精銳,武器比中國先進,他們有三菱重工,有零式戰鬥機,有航空母艦,而中國內地四處是軍閥混戰,黑社會橫行,老百姓大多不認字,還怕死,重工業基本談不上,飛機能數得出來,幾條破船在長江裏晃來晃去,且人心惶惶,一盤散沙。


    所以他們告訴全世界,滅亡中國,三個月足矣。


    於是他們打了進來,於是他們打了八年,於是他們輸掉了戰爭。


    因為他們不懂得中國人。


    因為我們這個民族,是世界上最為堅韌的民族。


    所謂的四大文明古國,其實大多名不副實,所謂埃及,所謂兩河流域,所謂印度,在歷史長河裏,被人滅掉了N次,雅利安人,猶太人,阿拉伯人,莫臥爾人,你來我往,早就不是原來那套人馬了,文化更是談不上。


    只有中國做到了,雖然有變化,有衝突,但我們的文化和民族主體,一直延續了下來,幾千年來,無論什麼樣的困難,什麼樣的絕境,什麼樣的強敵,從沒有人能真正地征服我們,歷時千年,從來如此。


    這是一個有著無數缺點,無數劣根性的民族,卻也是一個有著無數優點,無數先進性的民族,它的潛力,統計學和經濟學計算不出,也無法計算。


    日本人打進來之後才驚訝地發現,僅僅一夜之間,所有的一切都變了,軍閥可以團結一致,黑社會也可以潔身自好,文盲不識字,卻也不做漢奸,怕死的老百姓,有時候也不怕死。


    因為所有的一切,都已經牢牢地刻入了我們的骨髓——堅強、勇敢、無所畏懼。


    日本人不懂得,所以他們失敗了,以前如此,現在如此,將來依然如此。


    從來不需要想起,也絕不會忘記,這是一個偉大民族的天賦