SQL 2005中有個CTE (Common Table Expression)功能十分強大,可以用來做遞迴式的參考,藉以達成複雜的查詢邏輯並簡化查詢指令,是 SQL2005的一個新的重要功能。在使用 MySQL 時,由於沒有查詢端的存取模型好用,所以分頁通常都由程式自己來,在查詢指令下 limit m,n後,即可將要指定的分頁資料傳回,不會浪費 Network IO 在傳遞資料上。在 SQL Server 2000之前要達成這樣的功能,通常是配合temp table並配合 identity 欄位達成,但是仍需要將所有資料從第一筆到第 n 筆寫入 temp table 後,再取 top 的方式來操作,效能仍舊不理想。

所以我們可以使用SQL Server 2005中的CTE (Common Table Expression) 搭配 行號函數 ROW_NUMBER()來達到目的。與 ADO.NET 的分頁做比較,不僅可以降低 Network IO 外,更能在複雜查詢時提升效能,減少不必要的資源浪費,對於網頁分頁使用時有很大的幫助。

例如:查詢訂單資料表(orders),依訂單金額由大而小排序,取出第301到第400筆資料:



範例程式碼如下:

誰殺了我的牛?

有一位教授
認為現在的人很容易安於現狀
總覺得這樣就好,可以過就好了
沒有"過更好生活"的想法
於是決定帶他的學生到一座貧窮的村莊去看看
他們找了一個人家
決定借宿一宿
一進到家中,學生們不敢相信有人是過這樣貧困的生活
不過後來他們發現原來這家人有一隻牛
這一隻牛支撐這家人的生活,擠擠牛乳等等
隔天一大早
教授和學生們趁主人們還沒醒來時
準備動身回去
這時教授將學生帶到那頭牛的旁邊
問學生說誰可以殺了這頭牛
學生全部錯愕,想說怎麼可以殺了牠呢
那這家人要如何生活
正當學生們在想時
教授拿出一把刀朝牛的喉部給割了下去
學生們全部都愣住了,無法理解教授為什麼要這麼做
之後教授就帶著學生離開了.....

一年後
他們再度回到這個村莊
學生想起去年的那件事,非常擔心那家人現在是如何生活
來到了當年的地點,發現那戶破舊的房子已經不見了
取而代之的是一個看來生活富裕的人家
心想他們是不是已經搬走了,後來這塊地被別人買走了
學生們敲敲這戶人家,
發現來應門的男主人竟然是去年那戶人家的男主人
學生們非常好奇的想知道這一年到底發生什麼事了
男主人說不知去年是哪個人竟然殺了我們家的牛
當時我真的絕望到了谷底,不知該如何繼續生活
不過我想想我還有妻兒,一定要找出一條路生存
於是把家中後院給整理一下,灑點種子種點菜
沒想到種出來的菜比我想像的還多,
於是我就把多餘的菜拿出來賣,
再把賺到的錢拿去買更多不一樣蔬菜的種子
沒想到我竟然能賺的比以前的還多
給妻兒過更好的生活
這時學生突然明白了教授為什麼要這麼做了

== 以下摘錄於 天下雜誌 ==
美國超人氣激勵大師卡密歐.克魯茲(Camilo Cruz)在最新暢銷書《誰殺了我的牛?》中藉著一則跟「殺牛」有關的小故事,將牛比喻為我們經常替自己找的各種藉口、理由,清楚闡釋「放任藉口主導人生」時可能發生的情況。作者指出,每個人實際擁有的牛比願意承認的還多,他以簡單而幽默的方式告訴讀者如何擺脫這些讓人表現平庸的惡習與念頭。

名叫「平庸」的敵人

有些人終其一生都不知道自己深受「牛」的羈絆;有人雖然知道,卻照樣關照餵養這些「牛」。為什麼?因為這些「牛」讓他們待在安適區,安然接受這些平庸的狀態。這些人自願把「牛」照顧好,以擺脫成功的責任,然後把自己的不幸怪到其他地方,對任何事情都有一番藉口。

如果突然失去了可以為自己的平庸辯解的藉口,我們就只會剩下兩種簡單的選擇:為自己的情況擔起完全責任並開始改變(成功),或者接受我們無法掌控人生的事實並且認輸(失敗)。

只剩改變或認輸這兩種選擇時,該選哪條路似乎就很明顯了。

平庸比失敗還糟,跌落谷底至少還可以迫使我們重新檢視環境,考慮其他選擇。平庸則不一樣,平庸的最大危險在於它是可容忍的,讓我們習慣成自然。在此分享我前些時候聽到的一個故事,剛好可以說明這點:

一名男子去拜訪老農夫,老農夫也是知名的獵人。男子一到農場,看到農夫的獵犬趴在中庭,看起來顯然不太舒服,好像有什麼事情困擾著牠,讓牠猛吠,不斷地哀嚎。男子看了這種情況幾分鐘以後,問農夫是什麼原因讓這隻可憐的傢伙那麼不舒服。

「別理那隻老狗,」農夫說,「這種情況已經持續好幾年了。」

「你帶牠去看過獸醫,看問題出在哪裡了嗎?」男子問。

「何必麻煩?我完全知道那隻狗怎麼了,牠不過是太懶而已。」

「但是那和牠的哀嚎有什麼關係?」

「他現在趴的地方,剛好有釘子穿過木板,刺到牠的腿,讓牠很不舒服。所以後來他每次趴在那裡,就會又吠又叫。」

男子睜大眼睛驚呼,「牠為什麼不乾脆換到其他地方?」

農夫說,「我想是那根釘子對牠造成的困擾還不夠大吧。」

你認識的人當中有人符合這種情況嗎?你自己呢?周遭是否有惱人的事物讓你始終無法過應得的生活?如果有,現在就下定決心採取行動,從此擺脫讓你無法享有真正滿意人生的「牛」。

一號牛:自我安慰

「我痛恨我的工作,但我不該抱怨了……,至少還沒失業。」「我的婚姻可能不是全世界最好的,但至少沒有天天吵架。」

一號牛的危險在於,認為自己還算不錯、甘於現況的人並不覺得有必要改善自己的生活。

二號牛:不是我的錯

「我無法成功是因為另一半不支持我做任何事。」「如果爸媽沒離婚,或許我的人生就不會亂成這樣了。」「我的事業無法成長是因為經濟太糟,政府可以多幫忙企業主就好了。」

應該殺掉這頭牛的最大理由是,如果對自己坦白,就會了解發生在身上的一切大多是自己造成的,跟父母、老闆、經濟環境或其他東西無關。即使是我們感受的負面情緒,也是自己造成的。美國小羅斯福總統夫人艾蓮諾的名言最能說明這點,「除非你同意,沒人能讓你感到自卑。」

三號牛:一切都是命

「我爸有酒癮,我想我也會步上他的後塵。」「我沒念什麼書,可能永遠也不會有多大成就。」

熱門影片「洛基」走紅後不久,飾演洛基的席維斯史特龍有次受訪,被問到其中一個場景。在那幕中,洛基說,「我那不太精明的老爸告訴我,我先天不是很聰明,所以最好善用身體。」
電影劇本是史特龍自己寫的,他坦承常聽父親講那句話。他接著說,有好一段時間,那個自我設限的想法讓他無法看清自己的潛力。當他不再相信那些話,開始相信自己後,人生也跟著改變了。

相信自己不過是認清自己的優點與天賦,接受它們,並開始運用。擺脫這種「牛」的解放感,可以讓你張開眼睛,看到意想不到的新機會。

四號牛:完美主義

「我準備好全心投入以前,不想先嘗試新事物。」「在我還不知道怎麼把事情做好以前,不想先動手。」

完美主義也是最糟的一種「牛」。理由很簡單:那是「牛」偽裝成想要的水準。經過裝飾後,完美主義看起來反而比較像美德,而不是壞習慣了。

「如果值得做,就應該把它做好,否則乾脆不要做,我就是這樣的人。」你聽過這句話嗎?誰能反駁呢?聽起來好像是種負責、致力、堅持卓越的感覺。問題是,對很多人來說,那也變成一種藉口。正確的說法應該是:「如果值得做,值得我們嘗試,那就做到對為止。」所以你應該儘快動手,從今天就開始。

五號牛:自覺無能為力

「我對那種事向來不在行。」「小時候就養成的壞習慣很難戒除。」

我們覺得自己受到的限制,大多是和個人能力有關的荒謬想法。

對於任何限制不要毫不質疑就照單全收。不能因為沒有試過,就假設自己對某件事不在行。我們都是從做中學習、獲得經驗。所以如果你想殺了這種「牛」,就必須去實踐。

六號牛:人生大道理

「關鍵不在輸贏,而是在過程。」「學問好不如人面廣,而我一個人也不認識。」

為了讓藉口聽起來不太像藉口,我們經常會竭盡所能地援引一些看似深奧的理論。

我認識一個人,他經常引用「學問好不如人面廣」這句話來解釋職場生涯的不順遂。他畢業以後從沒進修過專業課程,也從不主動參與工作以外的事物。他認為,自己一直原地踏步的原因是沒有跟對人。

這些觀點的最大問題在於,一旦認同這些觀點,通常就會以它們做為生活準則。因此,採納任何新的指導原則之前,都應該思考它的來源。你覺得那句話最初是誰先提出的?我猜應該不是贏家。這隻「牛」可說是平庸的最佳註腳。

七號牛:自欺

「我隨時都可以戒菸,只是還沒下定決心而已。」「我沒有超重的問題,況且胖一點比較討喜。」「我沒有辱罵孩子,那是愛之深,責之切。」

這些想法都欺騙我們相信自己真的沒問題,即使有問題也不嚴重,或是事情非我們所能掌控。這些藉口往往和我們不願戒除抽菸、飲酒或暴食等惡習有關。

以上這些「牛」都有一個共通點:讓我們陷入平庸。擺脫這些「牛」的第一步,是先從日常的用字遣詞中排除這些說法,這是我們可以掌控的,操之在己。

較新的文章 較舊的文章 首頁