sql语句or与unionall的执⾏效率⽐较
当SQL语句有多个or语句时,可以考虑使⽤union或者union all代替来提⾼速度。使⽤or的SQL语句往往⽆法进⾏优化,导致速度变慢。但这不是固定的,有时候使⽤or速度会更快些。具体情况还要经过测试为准。如果加索引的话,也可能实现速度优化。
实验表格如下,实际数据有2,000,000条,从⾥⾯返回⼤约最多1000⾏左右的数据。
X Y Inline CDP T 1200240058010003003003400 1200240858010053003013402 1200241658010103003023404 1200242458010153003033406 ...............
or语句(部分节选)
SELECT * FROM tablename where (cdp= 300 and inline=301) or (cdp= 301 and inline=301) or (cdp= 302 and inline=301) or (cdp= 303 and inline=301) or (cdp= 304 and inline=301) or (cdp= 305 and inline=301) or (cdp= 306 and inline=301) or (cdp= 307 and inline=301)
union all语句(部分节选)
SELECT * FROM tablename where (inline= 300 and cdp=300) union all SELECT * FROM tablename
where (inline= 301 and cdp=300) union all SELECT * FROM tablename where (inline= 302 and cdp=300) union all SELECT * FROM tablename where (inline= 303 and cdp=300)
sql中union多表合并返回不规则的900条数据,前者⽤了60多秒,后者⽤了8秒左右。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。