mysql - 連續(xù)的24條sql語句,一條條查,還是union all好?
問題描述
這連續(xù)的24條是類似的,這是條件不一樣的,譬如9點(diǎn)到10點(diǎn),10點(diǎn)到11點(diǎn)
問題解答
回答1:“顯然,使用 UNION ALL 的時(shí)候,只是單純的把各個(gè)查詢組合到一起而不會(huì)去判斷數(shù)據(jù)是否重復(fù)。因此,當(dāng)確定查詢結(jié)果中不會(huì)有重復(fù)數(shù)據(jù)或者不需要去掉重復(fù)數(shù)據(jù)的時(shí)候,應(yīng)當(dāng)使用 UNION ALL 以提高查詢效率。”
回答2:為什么不用OR來連接這些條件呢?比如:
SELECT ... WHERE hour BETWEEN (9, 11) OR hour BETWEEN (13, 15)回答3:
對(duì)數(shù)據(jù)庫來說24次請(qǐng)求肯定比一次要更消耗資源(多次驗(yàn)證解析+網(wǎng)絡(luò)傳輸),并且如果你的時(shí)間是連續(xù)的話可以合并,最差的情況時(shí)間不連續(xù)union all更好,當(dāng)然前提是時(shí)間字段有索引,不建議換成or,因?yàn)閛r會(huì)增加解析且當(dāng)時(shí)間范圍過多時(shí)會(huì)有全表掃描風(fēng)險(xiǎn),而union all只需要將結(jié)果集合并即可
