MySQL 可以对单个查询使用多个索引吗?

2024-03-17

想象一个具有多列的表,例如,id, a, b, c, d, e。我通常选择通过id但是,客户端应用程序中有多个查询对列的子集使用各种条件。

当MySQL在多列上使用多个WHERE条件对单表执行查询时,它真的可以利用在不同列上创建的索引吗?或者使其快速的唯一方法是为所有可能的查询创建多列索引?


是的,MySQL 可以对单个查询使用多个索引。优化器将确定哪些索引将有利于查询。您可以使用EXPLAIN获取有关 MySQL 如何执行语句的信息。您可以使用提示添加或忽略索引,如下所示:

SELECT * FROM t1 USE INDEX (i1) IGNORE INDEX FOR ORDER BY (i2) ORDER BY a;

我建议阅读MySQL 如何使用索引 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html.

仅摘录几段:

如果需要在多个索引之间进行选择,MySQL 通常会使用 查找最小行数的索引。

如果 col1 和 col2 上存在多列索引,则相应的 可以直接获取行。如果存在单独的单列索引 在 col1 和 col2 上,优化器将尝试使用索引合并 优化(参见第 8.2.1.4 节“索引合并优化”),或 尝试通过确定哪个索引来找到最具限制性的索引 找到更少的行并使用该索引来获取行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 可以对单个查询使用多个索引吗? 的相关文章

随机推荐

  • 与 virtualenvs 和 Python 包的混淆

    在我的 python 程序中 使用 python3 5 由 virtualenv 运行 我需要使用 Pillow 库来处理图像 导入错误 没有名为 Pillow 的模块 告诉我 Pillow 没有安装在 virtualenv 中 但是 当我
  • Python的hashlib.sha256(x).hexdigest()相当于Rs摘要(x,algo =“sha256”)

    我不是Python程序员 但我正在尝试将一些Python代码转换为R 我遇到问题的Python代码是 hashlib sha256 x hexdigest 我对此代码的解释是 该函数将使用 sha256 算法计算 x 的哈希值并返回十六进制
  • 在 Dataflow Python flex 模板中包含另一个文件 ImportError

    是否有一个包含多个文件的 Python Dataflow Flex 模板示例 其中脚本导入同一文件夹中包含的其他文件 我的项目结构是这样的 pipeline init py main py setup py custom py 我正在尝试将
  • 按代码排序列表,然后按名称排序

    我有一个对象列表 我通过编写以下行按代码对此列表进行排序 Result Sort delegate Position p1 Position p2 return p1 Code CompareTo p2 Code 但我想首先按代码排序此行
  • @InjectMocks 之后为空

    在使用 JUnit 进行单元测试时 我在传递依赖项时遇到了一些麻烦 考虑这些代码 这是对我想要测试的类的依赖注入 我们称之为控制器 Inject private FastPowering fastPowering 这是单元测试 RunWit
  • 将gradle多项目转换为springboot fat jar应用

    我有一个 http servlet 应用程序多项目分级构建 我的项目是一个包含gradleHttpServlet 项目它依赖于其他两个 gradle java 项目 我将所有 3 个 jar 部署在tomcat webapps Web IN
  • toDataURL HTML5 获取画布数据的其他方式存在问题?

    我正在使用画布预先绘制图片 然后需要使用 Canvas toDataURL 将其保存到图像对象 但在 Chrome 上 我收到错误 未捕获的安全错误 无法在 HTMLCanvasElement 上执行 toDataURL 受污染的画布可能不
  • 我正在使用依赖注入:我应该将哪些类型绑定为单例?

    关于单例是否 不好 以及应该使用什么模式存在很多问题 他们通常关注单例设计模式 其中涉及从类的静态方法中检索单例实例 这不是这些问题之一 自从几个月前我真正 发现 依赖注入以来 我一直在推动它在我们团队中的采用 随着时间的推移从我们的代码中
  • read.csv() - 三列中的两列[重复]

    这个问题在这里已经有答案了 可能的重复 只读取 R 中有限数量的列 https stackoverflow com questions 5788117 only read limited number of columns in r 我有一
  • 使用 A* JPS 进行 3D 搜索

    我该如何概括跳转点搜索 http harablog wordpress com 2011 09 07 jump point search 3D 搜索量 到目前为止 我已经定义了涉及三个运动的 3D 立方体的修剪规则 直线 0 0 1 一阶对
  • 为什么在泛型类(Java)的构造函数中提供类型参数是错误的?

    我刚刚从一本教科书中学习 Java 中的泛型 其中讨论了一个类GenericStack
  • 如何使用 ICU4C 规范化字符串?

    我发现 ICU 文档有些挑战性 我的问题是 如何使用 ICU4C 规范化字符串 我正在查看 unorm2 normalize 但是如果缓冲区不够大怎么办 我以前怎么知道这一点 当然 我想标准化整个字符串 谢谢 gt 附 以下是该函数的 AP
  • 如何以编程方式更改 ActionBar 菜单项文本颜色?

    我有一个包含多个项目的操作栏 我想在单击该项目时更改文本的颜色 有没有办法以编程方式执行此操作 请提供示例或任何资源 Thanks public void catalogClick MenuItem item highlight menui
  • Scala 可变选项?

    我想要这样的东西 private val cachedResponse mutable Option empty A def get A cachedResponse getOrElseUpdate db findModel def upd
  • 基于非类型模板参数的重载

    我们熟悉基于函数参数的重载 但是为什么我们不能基于非类型模板参数进行重载呢 通过这种重载 您不必仅仅为了重载目的而添加额外的函数参数 这可能会对运行时性能产生负面影响 唉 下面的代码无法编译 template
  • jQuery 模拟点击选项卡并执行代码

    下面的代码 当我单击选项卡时 我会发布帖子并在选项卡中显示结果 在某些情况下 我想强制选择选项卡 但不仅选择该选项卡 而且选择该选项卡 执行单击它时执行的代码 在我的示例中 我喜欢选择第二个选项卡 jLikeToSet 1 并执行代码 po
  • 如何将一个android studio项目合并到另一个android studio项目中

    我有两个独立的 android 应用程序项目 它们是在 android studio 中制作的 我正在尝试将项目 1 合并到项目 2 中 使其成为一个应用程序 我将如何去做呢 我知道如何在 eclipse 中执行此操作 但不知道如何在 an
  • 使用 dart::ffi 从 Dart 包中调试 C++ 代码

    我正在用 C 开发一个包 用于 Flutter 应用程序 因此在 Dart 中 使用飞镖 菲菲 https dart dev guides libraries c interop我想知道除了记录消息之外 是否有更好的方法来调试 逐步 变量监
  • 从返回堆栈恢复片段时的savedInstanceState

    我可以用吗savedInstanceState 删除片段时保存状态 然后从返回堆栈弹出片段时恢复状态 当我从返回堆栈恢复片段时 savedInstanceState 包始终为空 现在 应用程序流程是 创建片段 gt 删除片段 添加到后台堆栈
  • MySQL 可以对单个查询使用多个索引吗?

    想象一个具有多列的表 例如 id a b c d e 我通常选择通过id但是 客户端应用程序中有多个查询对列的子集使用各种条件 当MySQL在多列上使用多个WHERE条件对单表执行查询时 它真的可以利用在不同列上创建的索引吗 或者使其快速的