SQL在使用JOIN時的一些原理

以前寫SQL用到INNER JOIN時,都自以為SQL會依照順序用等號左邊的資料表(驅動表)欄位去找等號右邊的資料表(被驅動表)欄位的資料

所以應該用資料量較少的Table去當驅動表去JOIN資料量較多的被驅動表,這樣速度會比較快

後來查資料才知道,我只對一半,用資料量少的資料表去找資料量較多的資料表這觀念是沒問題的。但並不是依照SQL語法由上到下的順序來判定JOIN時的驅動表和被驅動表。誰是驅動誰是被動還是要看執行計畫比較準確,MSSQL預設把有加索引的表當被驅動表,未加索引的表則為驅動表,在不同JOIN時會有不同的結果。

ps:個人猜測如果驅動跟被動表都使用到索引的話,應該是以資料筆數較少的表當做驅動表,但這只是個人猜測,還沒做過驗證。

...繼續閱讀 »

Bootstrap Modal(模態框)應用

互動式網頁中有兩個常見功能

1.在主畫面跳出新的表單輸入視窗

2.點圖放大

原畫面會變黑,並由新的視窗覆蓋在原本主要畫面上,這種效果可以用Bootstrap的Modal來完成。以下就用兩個範例來示範(ASP.Net MVC + AngularJS)

...繼續閱讀 »

使用ado.net方式撈取資料。並用DI取得appsettings.json裡的連線字串

.Net Core其實也可以使用.Net Framework時期那種ADO.Net的寫法

只是取連線字串的方式有點不同。其他步驟都大同小異

流程大致如下:

1.於建構子注入IConfiguration。之後就可以用實作GetValue取得appsettings.json裡的連線字串

2.下SQL做查詢,並用SqlDataAdapter接資料並塞進DataSet

3.把DataRow跟Model做Mapping。傳到View時就可以用強型別寫Razor語法

 

...繼續閱讀 »