zoukankan      html  css  js  c++  java
  • 数据库索引问题

     

    # 背景

    群上有一位同学咨询一个问题,两个查询语句,就一个limit 11, 一个limit 12,处理的效率相差巨大,如下图:

    # 解决

    原因就是因为limit不同,导致走了不同的索引

    走的索引不一样,决定了要检索的数据量多少
    1、当你要取的数据很少的时候,mysql认为走start_time的索引很快就能找够满足条件的数据,结果实际上满足条件的数据按照start_time倒序排列需要检索很多数据,所以会比较慢。
    2、而当你limit20的时候mysql认为按照其他索引可能需要扫描很多的记录才能找到你要的结果,所以走了city_id的索引。
    so这种情况你可以尝试一下按照start_time倒序排列后找两条最近的数据出来,按这些字段的值再去用limit 0,2检索看看是不是很快,如果是的话那就可以确定是这个原因。

    一个类似的问题:https://segmentfault.com/q/1010000010707314

    解决方法:

    1. 强制使用一个索引,try,可以解决,但不够灵活

    2. order by 后面的时间做个空运算,干扰下优化器,

    date_sub(create_time, interval 0 day)

    或者 

    create_time+0

  • 相关阅读:
    localX mouseX stageX
    帮陈云庆做的手机报
    另一种换行排列方块的方法
    换行排列(思路源自陈勇源代码)
    网上摘的
    ASP.NET页面间数据传递(转)
    数据库连接字符串大全 之 SQL服务器篇
    保存一个免费的在线的图片转换工具网站,支持BMP,JPG,IOC,PNG和GIF
    关于IE6和IE7以及多个版本IE共存的问题
    如何测试sql语句性能,提高执行效率
  • 原文地址:https://www.cnblogs.com/jwentest/p/9728835.html
Copyright © 2011-2022 走看看