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 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值