Re: [問題] SQL怎麼寫才會快呢?
※ 引述《bernachom (Terry)》之銘言:
: 最近和朋友聊到這個問題
: 討論的不是SQL的語法,是說,在C#裡,怎麼去讀這個字串會比較快呢?
: 例如說:
: 這樣子寫 : string dbconnection = "SELECT A FROM B WHERE C ='0'";
: 然後也可以這樣子寫 :
: string AA="SELECT A ", BB="FROM B ",CC="WHERE C='0' ";
: string dbconnection =AA+BB+CC;
: 這樣子寫法之類的
: 但是好像用類似第二種方式,拆開再合併執行會快一些?
: (我們合併是用這個AppendFormat)
: 雖然不太懂原因,但是好像快一些
: 想詢問的是,SQL都是拆開再合併,這樣子的寫法會比較快嗎?
: 有沒有在執行上比較有效率的方式呢,因為希望能讓SQL再快一些
: 謝謝教導了
就我所理解來討論這個問題:
1. 字串的操作最好以stringbuilder來作處理,你可能要先去google一下,stringbilder
的用處及優點在哪?以及字串的操作如果不用stringbuilder會有哪些壞處及好處?
2. SQL的執行快慢並不在於程式裡執行字串的操作,你應該要加強的是sql語法的優化,
如果你目前正在tunning sql查詢,給你個建議 再去google 『sql 執行計畫』,你可
以得知你的SQL查詢的執行成本,來去作語法優化的動作
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.246.72.136
推
08/24 23:48, , 1F
08/24 23:48, 1F
→
08/25 00:04, , 2F
08/25 00:04, 2F
→
08/25 00:04, , 3F
08/25 00:04, 3F
→
08/25 00:04, , 4F
08/25 00:04, 4F
→
08/25 00:05, , 5F
08/25 00:05, 5F
首先,這個問題你google stringbuilder就會有答案。
再來,我想程式執行的快慢,在SQL Statement並不會因為你將字串怎麼拆怎麼接會有
明顯差異,因為一切都跟『記憶體』有關。
以前受饋於版上眾位熱心人士.... 我將解答PO在下面好了
動態字串操作時,會產生很多不必要的記憶體,如下:
string a = "SELECT *"
a = a + " FROM TEST"
記憶體實際上 為了這個操作 NEW了2~3個參考 所以才會推薦你動態字串都用string
builder
再來你這邊屬於靜態字串操作,但是字串如何操作,與SQL的運作無關,畢竟字串組
一組後會送到SERVER作編譯動作,重點是在SQL語法方面。
如果您指的是系統的效率的話,我想字串會這樣拆主要是為了維護方便,至於效能..
我想人體是不會查覺得出來。
※ 編輯: MacPerson 來自: 111.246.72.136 (08/25 00:13)
※ 編輯: MacPerson 來自: 111.246.72.136 (08/25 00:29)
※ 編輯: MacPerson 來自: 111.246.72.136 (08/25 00:30)
→
08/25 00:35, , 6F
08/25 00:35, 6F
→
08/25 00:36, , 7F
08/25 00:36, 7F
→
08/25 00:36, , 8F
08/25 00:36, 8F
→
08/26 16:25, , 9F
08/26 16:25, 9F
→
08/26 16:26, , 10F
08/26 16:26, 10F
→
08/27 11:15, , 11F
08/27 11:15, 11F
→
08/27 20:32, , 12F
08/27 20:32, 12F