全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:629
推到 Plurk!
推到 Facebook!

有關SQL?

尚未結案
chrislao
初階會員


發表:86
回覆:69
積分:36
註冊:2002-12-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-10 00:33:17 IP:202.175.xxx.xxx 未訂閱
select Attendance.A_Date,Staff_Data.* from Attendance,Staff_Data where (Attendance.A_StaffID=Staff_Data.S_StaffID) and (convert(char(10),A_Date,101) = '01/08/2004') select temp1.a_date,staff_data.* from (select * from attendance where (convert(char(10),A_Date,101) = '01/08/2004')) as temp1,staff_data where temp1.a_staffid=staff_data.s_staffid 請問上述兩條SQL 的得出的結果否一樣? 如果 Attendance 的Table有多達二十萬條或以上的記錄, 第二條SQL的效率是否比第一條好?
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-10 13:18:32 IP:218.162.xxx.xxx 未訂閱
第二個絕對不會比第一個好, 因為它需要做兩次以上的處理 !!
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-11 15:54:25 IP:218.32.xxx.xxx 未訂閱
chrislao 你好: 依我的經驗, 很難說耶, 一般來說, 第二條 SQL 可能效率較差, 但是如果(select * from attendance where (convert(char(10),A_Date,101) = '01/08/2004')) 可以過濾掉很多的資料, 就很難說了. PS. Index 有很大的影響. 另外, Function 不僅會讓 Index 失效, 對速度也有很大的影響喔, 應盡量避免使用. 發表人 - Mickey 於 2004/01/11 15:59:38
chrislao
初階會員


發表:86
回覆:69
積分:36
註冊:2002-12-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-12 02:05:58 IP:202.175.xxx.xxx 未訂閱
(select * from attendance where (convert(char(10),A_Date,101) = '01/08/2004')) 可以過濾出400條記錄,再把該400條記錄和Staff_data的記錄作聯結 如果使用第一條,是否作了聯結後才做過濾呢? 我每次都是過濾了很大部份記錄,只剩餘400條記錄.
系統時間:2024-08-08 10:34:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!