我習慣於使用一個stringbuilder來建立一個Sql語句來執行,因爲這樣可以讓我在代碼中保持格式化和可讀的語句。然而,它可以產生一種效率低下的語句大量額外空白:在執行它們之前,我應該從SQL語句中調整空白嗎?
sb.AppendLine (@"SELECT DISTINCT *");
sb.AppendLine (@" FROM ( SELECT col1");
sb.AppendLine (@" , col2");
sb.AppendLine (@" , col3 ");
sb.AppendLine (@" , col4");
sb.AppendLine (@" FROM (SELECT *");
sb.AppendLine (@" FROM TABLE)";
sb.AppendLine (@" WHERE col5= col1 ");
sb.AppendLine (@" AND col6 = col2 ");
sb.AppendLine (@" GROUP BY col1");
sb.AppendLine (@" , col2");
sb.AppendLine (@" ORDER BY col3");
這個SQL是問題的一個例子,甚至可能不正確。
在我將它傳遞給一個要執行的命令對象之前,我應該從這裏除去空白嗎?或者命令會自己做,或者這只是一個不值得考慮的微觀優化?
我不認爲有可衡量的差異。 – 2012-03-15 15:47:20
@juergend - 這取決於很多因素。每秒如果你的服務器被100次查詢命中,該怎麼辦?我敢打賭它變得可衡量。 * [是的,這確實發生在實時環境中。不,我懷疑它適用於這裏;)] * – MatBailie 2012-03-15 15:54:09
*咳嗽*存儲過程*咳嗽* – onedaywhen 2012-03-15 16:16:13