之前做的查询功能今天被发现你速度缓慢 于是上网搜索解决的办法,但是网上的大佬们都是提到了优化数据库设计方面的办法,但是作为一个实习生怎么敢轻易改动数据库 于是就自己花了一个下午在改一条sql语句,最后总结出来了一点经验吧!
条件先行
在查询的时候大部分都是多表联查吧,单查一个表的情况很少 ,在俩个表以及俩个表以上联查的时候肯定会有一个主表(大部分条件都是在个表),其他的表基本就是一个条件等于一下 查一个字段 问题就在这里
谨记:查询是尽量嵌套select(最笨的办法),在最内层的select里面只查数据最多的那个表,而且该层select的from后尽量只出现一个表(主表),需要用到其他表的时候再去嵌套select(外层),把内层表查到的数据放在外层表的from关键子后 作为一个新表来查
我感觉自己没有说清楚 那就举个例子吧:
优化前:
SELECT a.a , a.b , a.c , b.a FROM biaoOne a , bioaTwo b WHERE a.d = ‘’ AND a.e LIKE ‘%%’ AND a.f = b.a AND a.g = b.b
优化后:
SELECT t.* , tt.a FROM
(SELECT a.a , a.b , a.c FROM biaoOne a WHERE a.d = ‘’ AND a.e LIKE ‘%%’) t , bioatwo tt
WHERE t.f = tt.a AND t.g = tt.b
大致就是这个意思,优化后的速度比优化前快很多 尤其在数据量很大的情况下