下午,我在做着技术支持系统的测试,同事叫我,告诉我以前那个业务查询sql,查询慢的原因找到啦。让我感到有些疑惑,于是就过去看了看。
原来是我查询2万多条数据的时候,没有真正的实现先过滤,后排序的功能,我们仔细的分析了,原来是为了一些特殊的业务查询操作,我们又把查询的数据封装了一下,把过滤的条件放到了封装后的sql的where条件里,应该放到内部子查询里面去。
当时,查找原因的时候,测试了一下,我们查询2万条数据,并不慢,大约2s左右,但是排序后,也许会占一大部分时间,确定是排序的原因。现在分析,以前的sql,进行每次查询,无论怎么过滤,都先把2万多条数据查出来,在封装,在过滤,这样本身过滤条件没有起到多大作用,在接着进行排序,又要花费一定的时间开销,总体会达到12s作用,经过修改后,先从2万条数据里过滤符合条件的数据,再在量不大的情况下,排序,性能上提高了6-10倍,看见,这样的查询性能是很可观的。
把这个作为工作日志,为以后开发,写复杂业务sql,进行参考之用。