stevenjin 2024-08-28 10:10 采纳率: 99.5%
浏览 2
已结题

关于mysql数据库索引命中失败的疑惑

1.很简单的一个表,有id,name,buildDate三个字段
2.将id设为主键可自增
3.将buildDate设为Normal类型的索引
查询时,如只用select buildDate from product时,可命中索引,但只要加一个字段就不可命中。请教正确的查询语句或索引方式

  • 写回答

1条回答 默认 最新

  • 每天吃八顿 2024-08-28 14:06
    关注

    如果是在查询的时候增加了一个字段,这时候就不会走单个索引。使用组合索引就可以了。
    下面是表结构和索引的图片

    img

    img

    我们先select buildDate from product时,可命中索引

    img

    然后我们在通过EXPLAIN select buildDate,name from product,这时候无法命中单列索引和组合索引

    img

    我们通过EXPLAIN select buildDate,id from product,可以命中单列索引

    img

    最后我们通过EXPLAIN select buildDate,id,sort from product,可以命中组合索引

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月5日
  • 已采纳回答 8月28日
  • 创建了问题 8月28日

悬赏问题

  • ¥15 岛津txt格式文件转nirs格式
  • ¥15 石墨烯磁表面等离子体
  • ¥15 angular 项目无法启动
  • ¥15 安装wampserver,图标绿色,但是无法进入软件
  • ¥15 C++ MFC 标准库 加密解密解惑
  • ¥15 两条数据合并成一条数据
  • ¥15 Ubuntu虚拟机设置
  • ¥15 comsol三维模型中磁场为什么没有“速度(洛伦兹项)”这一选项
  • ¥15 electron 如何实现自定义安装界面
  • ¥15 关于#linux#的问题:子进程C运行“ls –l”命令,且显示“C运行ls-l命令”(语言-c语言)