TsukuyoMiya 2019-11-18 15:05 采纳率: 20%
浏览 461

SQL查询语句索引的选择

有一个查询语句效率很低,但是实在无法确定该怎么建立索引。
查询条件是

select
    xxx
from
    a=1
    and b !=1
    and c = 1
    and d = 1
order by
    e desc
limit
    0,2

其中
1. a和d是表示状态的字段,重复度很高不适合建索引的那种
2. c的重复度很低,相同的只有几条,但有一大半是空值
3. b是主键 但取的是!=也走不了索引
4. e是数据的入库时间

在不改变查询条件的情况下应该把索引建在哪里?索引的字段顺序应该怎么放?

  • 写回答

3条回答

  • lppzyt 2019-11-18 15:25
    关注

    首先b字段是会走索引的,可以看下mysql的最左原则及mysql索引失效的几种规则。不是重复度高,不能建索引,若数据量大的话还是可以建索引的,索引用的是B-tree树,相当于折半查找。建议建索引a,d,c。另外使用explain查看一下执行计划。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog