最好是有反覆運算超過IO
- 後來添加
我檢查SQL Server 2000中,2005年和2008年所有3個解決方案(超過100,000個隨機行)並且在所有情況下,它們具有完全相同的執行計劃以及CPU和IO使用情況。
優化器做得很好。亞歷評論
select calc.amtpercent
from (select (amount1-amount2)/cast(amount1 as float) as amtpercent from z8Test) calc
where calc.amtpercent > 1 OR calc.amtpercent < 0.3
select (amount1-amount2)/cast(amount1 as float) as amtpercent
from z8Test
where (amount1-amount2)/cast(amount1 as float) > 1
or (amount1-amount2)/cast(amount1 as float) < 0.3
select (amount1-amount2)/cast(amount1 as float) as amtpercent
from z8Test
where (amount1-amount2)/cast(amount1 as float) not between 0.3 and 1
答:你有沒有與數據庫的工作?我見過很多次在IO中遇到瓶頸,從來沒有在數據庫服務器的CPU中遇到瓶頸。更確切地說,在少數情況下,當我的CPU使用率很高時,它是由IO瓶頸引起的,並且僅在兩種情況下由於錯誤地使用了加密技術的查詢(而不是加密參數值,並且在巨大表查詢中與列進行比較是解密列和比較參數)和第二種情況下非常多的不必要的轉換(日期時間到字符串並返回日期時間),這是對於真正頻繁觸發的查詢。
當然,您必須避免不必要的算術,但要小心如果您必須增加IO作爲折衷。
你確定它不止一次地執行它嗎? – 2009-07-01 09:06:31