多表条件查询的性能优化

多表条件查询的性能优化
sql1: select b.*,a.* from a,b where a.alt = b.alt and a.materialbill = b.mat and a.mtl = 'B01AE50131B3000AE' 

sql2: select b.*,a.* from a,(select alt,mat from b where mtlno = 'B01') b where a.alt = b.alt and a.mat = b.mat

大家写多表查询的时候可能经常会写成sql1的语句,虽然sql1和sql2所完成的结果是一致的不过效率上来讲sql2更高效。
下面是笔者对于sql1,和sql2执行效率的对比(在同环境中的100次执行 80%以上的情况下 sql1的执行时间是大于sql2的)
程序运行时间 sql1: 60642295ns
程序运行时间 sql2: 38701910ns

程序运行时间 sql1: 48397951ns
程序运行时间 sql2: 46428006ns

程序运行时间 sql1: 46488642ns
程序运行时间 sql2: 31040653ns

程序运行时间 sql1: 35065875ns
程序运行时间 sql2: 31788246ns

程序运行时间 sql1: 35922433ns
程序运行时间 sql2: 31519137ns

程序运行时间 sql1: 34986580ns
程序运行时间 sql2: 32410407ns

程序运行时间 sql1: 35279593ns
程序运行时间 sql2: 31643322ns

程序运行时间 sql1: 33958278ns
程序运行时间 sql2: 31290219ns

程序运行时间 sql1: 34027940ns
程序运行时间 sql2: 31123665ns

程序运行时间 sql1: 34309302ns
程序运行时间 sql2: 31402426ns

程序运行时间 sql1: 34546235ns
程序运行时间 sql2: 31409009ns

程序运行时间 sql1: 34160856ns
程序运行时间 sql2: 31276024ns

通过上面的结果可以看出sql2的执行效率更高效,当然如果只是有限的数据量这种性能可以忽略

你可能感兴趣的:(SQL优化)