论索引的重要性

2018-11-23 09:19:27

索引,比高铁还快

最近忽然发现有个列表显示不出来了,后来查询,发现是sql的问题。

这个sql查询的库比较大,并且还要left join 用户信息。

我都想把这个接口分开,单独查询用户信息,存储缓存来解决这个问题。


当然这是最后的策略。


我还是先优化sql吧,说来是优化数据库。


一开始这个sql竟然要19秒,这可不是一般的慢啊。


我跟拒where 还要left on 的字段,一个一个加索引,速度慢慢降下来了,将到了9秒。

但9秒也不是我们想要的啊。

知道最后一个关键索引,order by 后面的字段我也给加了索引。

我去,瞬间 200ms查询出了数据。


我还有什么能说的呢,看来索引基本能解决一切慢sql。好开心。

  • 2018-05-05 20:31:52

    StringUtils就这1张图,必备(二)

    StringUtils是工作中使用最频繁的一个工具类,提供了大量丰富的字符串操作方法,下面是所有方法的一个蓝图:

  • 2018-05-06 00:41:36

    设置EditText不自动聚焦

    如果界面中有EditText的时候,用户打开界面的话EditText就会自动聚焦。如果想取消这种一打开界面EditText就聚焦效果,可在EditText的上级父容器中加入如下代码:

  • 2018-05-21 13:54:06

    laravel-nestedset:多级无限分类正确姿势

    Nested Set Model 是一种实现有序树的高明的方法,它快速且不需要递归查询,例如不管树有多少层,你可以仅使用一条查询来获取某个节点下的所有的后代,缺点是它的插入、移动、删除需要执行复杂的sql语句,但是这些都在这个插件内处理了!

  • 2018-06-02 00:29:58

    Android实现沉浸式状态栏的那些坑

    最近项目需要实现沉浸式的状态栏,其实我在之前就了解过Android的沉浸式,发现有些棘手就放弃了,但是此次是公司的项目需要的,就花了几天把这个问题搞定了,在此记录一下,并mark几个坑。 首先,沉浸式是Android 4.4及以上才有的,在后续的5.0及6.0上面都增加了一些相关支持,于是问题就不太好办了。先看我实现的效果:

  • 2018-06-02 00:30:35

    Android 解决沉浸式状态栏下,输入法弹出,布局不会自动调整的BUG

    在开发中,如果输入框在布局的底部。在弹出输入发时,为了使输入法不遮挡输入框通常有两种做法: 1.将布局压缩(Activity的android:windowSoftInputMode属性设置为”adjustResize”)。 2.移动布局,将布局顶到输入框之上(Activity的android:windowSoftInputMode属性设置为”adjustPan”)