为什么这个查询使用where而不是索引?

2024-02-14

EXPLAIN EXTENDED SELECT  `board` . * 
FROM  `board` 
WHERE  `board`.`category_id` =  '5'
AND  `board`.`board_id` =  '0'
AND  `board`.`display` =  '1'
ORDER BY  `board`.`order` ASC

上述查询的输出是

id  select_type table   type    possible_keys   key key_len ref rows    filtered    Extra
1   SIMPLE  board   ref category_id_2   category_id_2   9   const,const,const   4   100.00  Using where

我对此有点困惑,因为我有一个索引,其中包含我使用的列,其顺序与查询中使用的顺序相同......:

category_id_2   BTREE   No  No 
category_id 33  A       
    board_id    33  A   
    display 33  A   
    order   66  A   

的输出EXPLAIN有时可能会产生误导。

例如,filesort与文件无关,using where并不意味着您正在使用WHERE条款,以及using index可以显示在没有定义单个索引的表上。

Using where只是意味着表上有一些限制子句(WHERE or ON),并且并非所有记录都会被返回。注意LIMIT不算作限制性子句(尽管可以算作)。

Using index表示所有信息都从索引返回,而不查找表中的记录。仅当查询所需的所有字段都被索引覆盖时,这才有可能。

既然你选择了*, 这是不可能的。除以下字段外的字段category_id, board_id, display and order索引未涵盖,应查找。

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

为什么这个查询使用where而不是索引? 的相关文章

随机推荐

  • 在因子(二进制)列(r 语言中的向量)上对数据框条件进行子集化

    我有一个 1 0 的序列 指示患者是否处于缓解状态 假设缓解或未缓解的记录是在离散时间进行的 我如何检查每个患者的马尔可夫特性 然后总结结果 即假设任何患者在任何时间缓解的概率仅取决于患者上次缓解 上次未缓解 与事情相同 也就是说 任何患者
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • Kivy:App.root 中的实例无效

    我是Python和Kivy的新手 这是我的第一个小项目 不知道我做错了什么 以下是来自pydev eclipse 的日志 INFO Kivy v1 8 0 INFO Logger Record log in C Users Sudheer
  • AngularJS - 过滤空对象

    我有一个包含大量数据的 scope myData 对象 我想做的是显示数据但过滤掉空值和空字符串 scope myData ID 001 Message test test test test ID 002 Message test tes
  • 禁用先前日期但将字段留空?

    我正在设置minDate now 以防止选择当前日期之前的日期 但是 这会使用当前日期填充该字段 不一定是大问题 但是 如果我在字段上执行验证 即 它已填充 那么即使没有选择日期 用户仍然可以提交 有什么办法解决这个问题吗 编辑 抱歉 但似
  • 从 C# 流中读取无符号 24 位整数

    使用 BinaryReader 从 C 流读取无符号 24 位整数的最佳方法是什么 到目前为止我用过这样的东西 private long ReadUInt24 this BinaryReader reader try return Math
  • 安装 Tidy、PHP

    我猜当 php 安装在我的盒子上时 没有包含 with tidy arg 当浏览我的 php ini 时 该行 extension php tidy dll 不见了 如何将模块添加到我的 php 安装中 注意我尝试添加 extension
  • Vaadin 网格行高

    我想减小单元格大小 以便在屏幕上容纳更多行 屏幕 1 到目前为止我已经用过 v grid cell font size 13px height 18px vertical align middle v grid row height 18p
  • android - 在两个网络视图之间共享会话?

    首先 有人可以解释一下怎么做吗CookieManager getInstance 工作 我真的不明白如何从 webview 获取会话 假设我有这个 CookieSyncManager createInstance WebviewPage t
  • 全局和本地 python 安装,以及意外在 virtualenv 之外运行需求文件

    所以我在谷歌上搜索了一个 pip 需要 sudo 权限的事件 我遇到了以下两个线程运行 sudo pip 有哪些风险 https stackoverflow com questions 21055859 what are the risks
  • 通过文本和文件流保存 openpyxl 文件

    我正在将 OpenPyXL 构建到一个应用程序中 该应用程序需要一个包含 excel 文件内容的字符串 以便通过文件流写入 根据我对 OpenPyXL 源代码的调查 它看起来并不支持这种输出 有谁有修改 openpyxl 以支持这一点的经验
  • 如何检查特定的子解析器?

    如何检查特定的子解析器 import argparse if name main mainparser argparse ArgumentParser submainadder mainparser add subparsers title
  • Javascript:根据其内容选择选项

    基本上是这样 但是在纯 JavaScript 中 如何使用 Nokogiri 根据选择标签的内容获取选择标签的 值 https stackoverflow com questions 2346257 how to get value of
  • 判断 NSNumber 是否为 NaN

    如何判断可可是否NSNumber表示 NaN 不是一个数字 例如 当我解析具有无效 非数字 内容的字符串时 就会出现这种情况 所以 我发现类属性 NSDecimalNumber notANumber 就是为了这个目的 在某些语言中 NaN
  • 按 ID DESC 排序

    我试图让博客页面按降序给出的自动递增唯一 ID 对其条目进行排序 但它似乎不允许这样做 尽管 SQL 请求如下所示 但它始终按升序显示 SELECT FROM news blog ORDER BY news id DESC 是不是因为新闻i
  • 我可以配置 NLog 在日志达到一定限制后修剪日志吗?

    NLog 可以配置为在日志文件达到一定文件大小后自动修剪 修剪日志文件吗 我认为您最接近的目标是使用archiveAboveSize属性让 NLog 在日志文件达到一定大小时对其进行归档 通过将其与maxArchiveFiles属性 您可以
  • 请解释一下Labeled statements的用法

    Java 中标记语句的唯一用途是中断和继续吗 您什么时候在程序中使用过标签语句 抱歉 代码片段已被删除 我正在拆分问题 JLS 14 7 标签语句 https docs oracle com javase specs jls se14 ht
  • ASP.NET MVC 自定义 ModelMetadataProvider 和 ModelValidatorProvider

    在我的 ASP NET MVC 应用程序中 我在数据库中定义了基于元数据的模型 我有一个定义数据元数据的自定义对象 并使用数据集进行 DTO 为了显示这一点 我计划编写一个自定义 ModelMetadataProvider 和 ModelV
  • 在 PyCUDA 中迭代二维数组

    我试图在 PyCUDA 中迭代一个 2D 数组 但最终得到了重复的数组值 我最初抛出一个小的随机整数数组 它按预期工作 但是当我向它抛出图像时 我一遍又一遍地看到相同的值 这是我的代码 img np random randint 20 si
  • 为什么这个查询使用where而不是索引?

    EXPLAIN EXTENDED SELECT board FROM board WHERE board category id 5 AND board board id 0 AND board display 1 ORDER BY boa