SQLServer中需要避免的查詢設計錯誤

2021-12-29 20:25:36 字數 1709 閱讀 5882

sql server常見的需要避免的查詢設計錯誤:1、如果你在構建資料模型的時候沒有考慮到資料的訪問方式,將會導致難以處理的查詢。你可能會用到根本不必要的join增加**,損害效能。

假如你要糾正這個問題,可以考慮一下需要訪問資料的查詢。如果查詢在這個處理階段不是很清晰,那麼將來在寫**的時候就會更困難。很有可能是資料庫設計過於複雜,可以通過簡化來改善查詢的效能。

與此相關,如果你是個喜歡直觀的人,那麼就列印出資料模型,或者在你選擇資料建模工具的時候檢視一下**的模型。這可以改善你的**時間和精確性。

2、傳統的說法是,對所有的資料庫訪問都使用基於集合的邏輯。一般來說,我同意這是最好的經驗之一。當基於集合的邏輯是正確的選擇的時候,卻使用了指標,可能會對效能產生很大的損害。sql server的設計是使用基於集合的邏輯,並且在大多數處理中應該使用它。

事分兩面,另一面就是指標的例子。在這種情況下,指標邏輯勝過基於集合的邏輯。從這個資訊引申出來的結論就是,判斷你要執行的處理的型別,選擇最適合需要的技巧。

3、sql server 2005為你的查詢提供了一整套新的機會。所以使用老的辦法可能仍然會起作用,但是也是時候去考慮一下最新的選擇了。try…catch錯誤處理方法是你最先應該使用在**中的技巧之一。此外還要考慮的是對層次進行處理的時候,可以用到通用表壓縮;最後一項考慮是擴充套件關係型資料庫引擎的功能:通用語言執行時(clr)。這三項技術都在極大程度上改變了你使用sql server工作的方式,而它們只是冰山一角。

4、檢查你的**,然後安排乙個時間進行同樣的檢視,這是在部署**之前必須要做的事情。檢查你的**,明確查詢計畫,是確保使用了合適的索引,並且查詢會像你期望的那樣執行的重要保障。

5、輸入select *語句,想著表永遠不會改變,這是乙個經典的查詢設計錯誤。即使在最簡單的解決方案中,表的改變也是不可避免的,你需要檢視**確保沒有包含乙個額外的字段。或者,更糟糕的是,你必須等待應用程式崩潰,然後修正這些問題。最好的實踐方案只是在你的查詢中包含進來你需要的那些字段,然後必要的話就修改它們。不要把你的時間浪費在四處冒煙的模式中徹查**。

6、不幸的是,我見過的大多數**都很少或者根本沒有注釋。所以進行更改是一件令人畏懼的任務,即使是對那些最初開發了這個應用程式的開發人員和/或資料庫管理員。注釋你的**真的是乙個快速並且不痛苦的過程,對於未來的開發人員以安全和省時的方式理解和修改**來說,這是至關重要的。

7、很少有開發人員和資料庫管理員會喜歡簡單的測試,他們也不喜歡在發布**到產品環境之前進行嚴格的測試。並且,開發環境通常在硬體和資料量上都達不到產品環境的規模。就是說,簡單的查詢在幾百個或者甚至是幾千個記錄上都可以工作良好,但是在產品環境中就不是這樣了。對於你的查詢沒有別的更好的準備辦法了,只有在測試環境中對含有碎片的表中幾百萬條資料進行測試,以此來確保查詢會按照你的期望執行。

8、輸入select語句,沒有包含where子句,期望中間層或者前端以比sql server更加有效的方式來處理得到的資料,這是個很糟糕的主意。sql server就是設計用來處理查詢,並且將其執行得非常高效的。將大量的資料移動只會讓被洪水包圍的系統和網路陷入困境。一定要盡可能地過濾你的資料,避免對效能產生影響。

9、檢視可以滿足你簡化複雜查詢中的**的需求。它們通常用來幫助有權利的使用者查詢資料庫。不幸的是,太多的好事情也會嚴重影響效能。檢視就是乙個簡單的select語句,檢視的select語句必須在每次你輸入select語句的時候再次輸入。限制檢視的使用,防止它們查詢其他檢視。或者,構建乙個儲存過程來查詢資料,並且傳遞給它需要的引數來滿足應用程式或者使用者的需求。

檢視SQL Server是否需要公升級

作為乙個sql server的資料庫 方法1 select version 方法2 select serverproperty productlevel asproductlevel,serverproperty productupdatelevel asproductupdatelevel,ser...

sqlserver 恢復模式及避免日誌爆滿的方法

recovery 迴圈日誌,空間自動 不可備份日誌,恢復時僅能恢復到資料庫備份時間點 用於落地資料或測試環境或olap,不推薦用於生產oltp 有時候distribution過大也可置為 recovery bulk logged 常規操作日誌正常記錄,特定操作時僅記錄少量日誌 恢復時特定操作將做回滾...

移動UI設計中需要避免的四種常見使用者體驗誤區

這其中的原因肯定是很複雜的,但是應用開發過程中存在著一些屢見屢犯的錯誤是原因之一。這些應用是做什麼用的你能猜出來嗎?在沒有證明自己可以給使用者帶來什麼好處之前,就要求對方註冊或 社交網路,這麼做只會嚇跑使用者。pheed和tumblr均要求先註冊 不同而是,pheed 在你還沒有看到任何東西之前就要...