Re: [SQL ] 多次LEFT JOIN的效能

作者: lbeeon (力比恩)   2015-09-11 00:09:52
不太確定你是ASP還是.NET,不過我用.NET大概示範好了,
我沒寫過ASP....
Dictionary<sting, string> KeyCode = new Dictionary<string, string>();
var KeyList = db.CodeTable.toList(); //EF
foreach(var item in KeyList)
{
KeyList.Add(item.key.ToString(),item.name.ToString());
}
不太確定你的Data Source 看你的error 是走ODBC..
那可能是ADO? 不管怎麼樣你可以再讀資料的時候加上轉換,
var 採購單List = DataSourec.toList();
foreach(var item in 採購單List)
{
料件名稱 = KeyList.ContainsKey(item.料件代號) ?
KeyList[item.料件代號] : item.料件代號;
(如果是ADO的話我猜可能是item["欄位名稱"])
.....
}
不太確定你的資料量到底多大,不過已訂單來說要破百萬應該是有難度,
但是就是算百萬級資料也不至於會當,可能要調整一下索引,
不然就是把資料篩選完後再做Left Join,降低運算量。
※ 引述《ryrp (RyRp)》之銘言:
: 請教一下各位高手
: 如果我有一個table 是存放代號 其他的table存放代號資料
: 我用left join去抓代號資料 這樣的寫法正確嗎
: ex:採購單上 有廠商代號、料件代號、倉庫代號
: 我再用left join 去存放這三個資料的table抓資料
: select B.廠商資料,C.料件資料,D.倉庫資料 from
: ((採購單 as A left join 廠商單 as B on A.廠商代號=B.廠商代號 )
: left join 料件單 as C on A.料件代號=C.料件代號)
: left join 倉庫單 as D on A.代號代號=D.倉庫代號
: 用這種方式抓到第三個LEFT JOIN還可以
: 但第四個我的ASP就跑很久當掉了
: 不知道我的語法需要修正哪些地方
: 非常感謝各位的閱讀~

Links booklink

Contact Us: admin [ a t ] ucptt.com