這幾種是dbms為了滿足某些特定需求而提供的功能。使用這些功能要付出難除錯、難維護、低效能的代價。
千萬不要因為它們看起來複雜就覺得很高深,更不要因為覺得使用這些複雜功能看起來很牛,就讓它們在**中頻頻出現。這些功能應該掌握,但要盡量避免使用。如果資料庫設計合理,這些東西基本是可以避免使用的。
武俠片中有個規律:使用的**越是複雜、神秘、駭人的角色,其武功越是一般。而絕頂高手往往一把片刀、一把掃帚甚至赤手空拳就能威震江湖。記住it領域的kiss原則,簡單的往往是最好的,正是此理。
3. 不要過早優化
knuth有句名言:「過早優化是萬惡之源」(有興趣可參看《unix程式設計藝術》1.6.15節)。在sql中支援這一觀點的理由如下:
1) 新手常常會低估dbms的處理能力,或者高估實際問題的規模(資料量)。
2) 即使需要優化,也要遵循科學的優化方法(簡單來說是:建立基線、尋找瓶頸、優化、測試)。盲目優化效果往往適得其反,既增加系統複雜度又降低效率。
當然,在資料庫設計和編碼時,一些高效能的架構設計和編碼習慣是需要的。但這需要對資料庫查詢優化技術有深入了解。學習sql總要一步一步來。
4. 不要人云亦云,盲目相信一些傳聞
sql查詢優化是個複雜問題,硬體配置、dbms版本、表結構定義、索引、資料量、查詢語句,都會影響查詢效能。判斷乙個語句的效能,最好是自己嘗試一下,觀察執行計畫和統計資料。而對於網上看到的論斷,即使不能一一嘗試,至少也要想一下為什麼,而不是盲目相信。
在csdn論壇上看到的流傳甚廣的傳聞:
1) where charindex('abc', columnname) > 0 比 where columnname like '%abc%' 效能好。
2) 用join判斷a表資料在/不在b錶比 in/not in 和 exists/not exists 效能好。
很好奇這些傳聞是怎麼產生的。
WPF 基礎總結 學習建議
微軟開發者部落格 微軟文件與學習 微軟開發者平台 舉個簡單得例子,類似造房子,當然實際上可能非常細,對應的如下所示 在此之前,需要了解的是。知道了如何在xaml中寫 儘管在此之前,很多經驗老道的winform開發者也發現了,開啟工具箱,wpf的控制項仍然像winform一樣支援拖拽過來,到某個位置,...
優化SQL的建議
1.用truncate替代delete 當刪除表中的記錄時,在通常情況下,回滾段 rollback segments 用來存放可以被恢復的資訊。如果你沒有 commit事務,oracle會將資料恢復到刪除之前的狀態 準確地說是恢復到執行刪除命令之前的狀況 而當運用truncate時,回滾段不再存放任...
SQL學習(基礎)
sql簡介 是一種結構化查詢語言 structured query language 用於訪問和處理資料庫的標準的計算機語言。sql的作用 create select insert update delete drop 1 sql 面向資料庫執行查詢 2 sql 可從資料庫取回資料 3 sql 可在...