SQL查詢效率的討論
對(duì)于數(shù)據(jù)庫(kù)來(lái)說(shuō),查詢是數(shù)據(jù)庫(kù)的靈魂,那么SQL查詢效率究竟效率如何呢?下文將帶對(duì)SQL查詢的相關(guān)問(wèn)題進(jìn)行討論,供您參考。
一個(gè)百萬(wàn)級(jí)別的基本信息表A,一個(gè)百萬(wàn)級(jí)別的詳細(xì)記錄表B,A中有個(gè)身份證id,B中也有身份id;先要找出A中在B的詳細(xì)記錄。
S1:select B.* from A inner join B on A.id=B.id.
S2:游標(biāo)遍歷A表,更具ID找出B表中的記錄,再插入的一張臨時(shí)表里。
實(shí)驗(yàn)結(jié)果:S2的時(shí)間效率要遠(yuǎn)大于S1,至少100倍以上。
對(duì)一張百萬(wàn)級(jí)別的表建游標(biāo),同時(shí)又沒(méi)有什么過(guò)濾條件,取得游標(biāo)效率是如果直接SQL查詢百萬(wàn)條數(shù)據(jù);如果再對(duì)每條記錄做處理,耗時(shí)將更長(zhǎng)。
沒(méi)有萬(wàn)能的工具,只有最合適的工具。為結(jié)果找最合適的方法、工具-sql server。
續(xù):
S3:select B.* from B where EXISTS(select 1 from A where id=B.id)
該方案比S1稍微,弱100毫秒級(jí)
【編輯推薦】