非常简单的mysql查询不使用索引

2024-02-09

我的 mySQL 表的排序不使用索引,我不知道为什么。

我有:

CREATE TABLE IF NOT EXISTS `test` (
  `a` int(11) NOT NULL,
  `b` int(11) NOT NULL,
  KEY `kk` (`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

和这个:

EXPLAIN SELECT * 
FROM test
ORDER BY a

还有这个

EXPLAIN SELECT * 
FROM test
USE INDEX ( kk ) 
ORDER BY a

给了我这个:

id select_type table type possible_keys key  key_len ref  rows  Extra
1  SIMPLE      test  ALL  NULL          NULL NULL    NULL 10009 Using filesort

我不想看到这个文件排序,并使用键 kk 对我的表进行排序。我究竟做错了什么?


谢谢你们的帖子,他们回答了我的问题!但是,现在我不明白“表扫描”和“文件排序”是什么意思?即使我选择表的所有字段和所有行,通过在 O(n) 内遍历该列索引的内部树(然后在表中查找)按一列对该表进行排序不是更快吗?将请求的额外列归档,每行的时间复杂度为 O(1) => 索引文件存储表文件中每行的物理位置,或者?),而不是排序,例如通过 O(n * log n) 快速排序表文件中(可能)随机存储的行,而不触及索引?我想我对索引在 mySQL 中如何工作的理解是错误的。


  1. 您正在选择所有行
  2. 您正在选择所有列

按照我上面所说的 - mysql估计使用全扫描会更有效率。

要使用索引获取它,您需要添加一些WHERE这会将其限制为合理的返回行数(例如 50)

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

非常简单的mysql查询不使用索引 的相关文章

  • Rails 创建 schema_migrations - Mysql2::Error: 指定的键太长

    我正在使用Rails 3 2 6和Mysql 6 0 9 但我在MySQL 5 2 25上有完全相同的错误 当我创建新数据库时 rake db create 然后当我尝试加载架构时 rake schema load 我收到此错误 Mysql
  • python - _mysql 无法打开包含文件:'config-win.h':安装 mysql-python 时没有这样的文件或目录

    我试图安装两个名为 mysql python 和 mysqlclient fork of mysql python 的 python 库 然后当我尝试使用 pip 安装它时出现此错误 Collecting mysql python Usin
  • LEFT JOIN 返回与 INNER JOIN 相同的结果

    我有一张桌子 磨砂膏 里面有 1600 个独特的物品 第二张桌子有100万以上 我运行 INNER JOIN 并获得 65 个匹配项 SELECT a BW Parent Number a Vendor Name b Parent Supp
  • sqlalchemy 中的随机 ID(pylon)

    我正在使用 pylons 和 sqlalchemy 我想知道如何将一些随机 id 作为primary key 最好的方法是使用随机生成的 UUID import uuid id uuid uuid4 uuid 数据类型在某些数据库中本机可用
  • 脚本超时已过,如果要完成导入,请重新提交相同的文件,导入将恢复

    我有一个数据库 拉开拉链后的尺寸50mb拉链尺寸7mb所以当我尝试导入数据库时zipped 7mb 几分钟后 它抛出此错误 脚本超时已过 如果您想完成导入 请resubmit相同的文件和导入将恢复 我已经重新提交了 但仍然没有导入全部数据
  • MySQL 中有“connect by”替代方案吗?

    如果我使用 Oracle 有connect by可用于创建分层查询的关键字 目前我正在一个项目中使用MySQL 我想知道是否有替代方案connect by在 MySQL 中 我尝试过谷歌 但到目前为止还没有结果 我想要实现的是通过一个查询从
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 将sql查询结果写入mysql中的文件

    我正在尝试使用 mysql 将查询结果写入文件 我在一些地方看到了有关 outfile 构造的一些信息 但似乎这只将文件写入正在运行 MySQL 的机器 在本例中是远程机器 即数据库不在我的本地机器上 或者 我还尝试运行查询并从 mysql
  • 级联删除时触发调用

    我在 MySQL 中有表 A 它有一些对其他表 B C D 的级联删除的引用 当从 A 中删除某些内容时 我需要使用触发器 当我直接从 A 删除记录时 此触发器起作用 但它不适用于级联删除 是否存在任何版本的 MySQL 可以让我的触发器与
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • VIEW for 表结合 UNION ALL 的 MySQL 性能

    假设我有 2 张桌子MySQL create table persons id bigint unsigned not null auto increment first name varchar 64 surname varchar 64
  • Mysql关于重复键更新+子查询

    使用这个问题的答案 需要 MySQL INSERT SELECT 查询具有数百万条记录的表 https stackoverflow com questions 662877 need mysql insert select query fo
  • 软删除最佳实践(PHP/MySQL)

    Problem 在处理产品和订单的 Web 应用程序中 我想维护前员工 用户 与他们处理的订单之间的信息和关系 我想维护过时产品和包含这些产品的订单之间的信息和关系 然而 我希望员工能够整理管理界面 例如删除前员工 过时的产品 过时的产品组
  • MySQL 将表的校验和存储在另一个表中

    语境 我们有包含大量表的大型数据库 他们中的大多数 99 都使用innodb 我们希望有一个日常流程来监视哪个表已被修改 当他们使用 innodb 的值时Update time from SHOW table STATUS from inf
  • 如何将变量设置为触发器 MYSQL 内存储过程的结果?

    我这里有一个小问题 我正在为我的数据库工作创建一个触发器 但我不知道如何在触发器内使用存储过程 我想将过程的结果保存在变量中 然后使用稍后在 IF 比较器上变量 这是我的代码 DELIMITER CREATE TRIGGER insert
  • MySQL - 从另一个表插入与常量合并的数据

    我有一个包含一些数据的临时表 products temp 并且我有另一个需要将数据插入其中的表 产品 我需要在新记录上手动设置一些常量 例如vendor id 1等 是否可以在一次请求中插入临时表数据和常量 临时产品 product nam
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • 在 MVC 操作中隐藏查询字符串

    我想将查询字符串隐藏到我的控制器的操作中 在我的应用场景中是这样的 1 我已在新窗口中打开新操作 var check Particular String var url rootUrl Home Preview Docs check win
  • 是否可以通过 flutter app 分享您的位置

    我在 flutter dart 中构建了一个应用程序来访问用户的位置 我现在想通过 Whatsapp 电子邮件等共享用户当前的物理位置 但不是作为坐标 我尝试过地理定位和位置 但似乎只能获取坐标 下面是我的分享按钮的片段 其中显示了坐标 分
  • cls() 函数在类方法中做什么?

    今天查看别人的代码 看到了这样的内容 class A B Omitted bulk of irrelevant code in the class def init self uid None self uid str uid classm
  • 过载解析异常

    不确定这是否是 C 4 特定的 但只是注意到了这一点 考虑以下类 class Base protected void Foo object bar DayOfWeek day class Program Base protected voi
  • PDO 相当于 mysql_fetch_array

    我正在努力处理相当于以下查询的 PDO 该查询计算队列中有多少个新项目 并计算出完成它们需要多少周 从而给我一个工作堆栈时间表 count new to be made new SELECT FLOOR SUM TotalNew 7 AS
  • Unity 容器 - 延迟注入

    假设我有课 class Foo FooBase public Foo Settings settings IDbRepository db base settings this db db 基本上 FooBase 通过构造函数接收设置并从配
  • java.lang.ClassCastException:[Ljava.lang.Object;无法转换或 BeanUtils.copyProperties 不起作用

    我是 JPA 新手 并且 Spring Boot 在使用 Query param 时无法获取 api 响应 我尝试实现内部联接 存储库类 Transactional rollbackFor Exception class Modifying
  • 堆栈分配的 RAII 对象与 DI 原理

    在 C 中 我经常使用 RAII 风格的对象来使代码更可靠 并将它们分配在堆栈上以使代码更具性能 并避免 bad alloc 但是在堆栈上创建具体类的对象违反了依赖倒置 DI 原则并阻止了模拟该对象 考虑以下代码 struct IInput
  • 实体框架工具不适用于 UWP 应用程序 C#

    启动项目 EFGetStartedUWP 是一个通用 Windows 平台应用程序 此版本的 Entity Framework Core 包管理器控制台工具不支持此类项目 有关将 EF Core Tools 与 UWP 项目结合使用的详细信
  • 我可以列表初始化仅移动类型的向量吗?

    如果我通过 GCC 4 7 快照传递以下代码 它会尝试复制unique ptrs 进入向量 include
  • 求解热方程

    我求解金属棒的热方程 一端保持在 100 C 另一端保持在 0 C 如下 import numpy as np import matplotlib pyplot as plt dt 0 0005 dy 0 0005 k 10 4 y max
  • '.' 之前应有主要表达式代币

    我已经为此奋斗了一段时间并环顾四周 但我不确定我做错了什么 错误 错误 标记之前应有主表达式 addElement 方法内的大部分代码都会弹出 涉及 BinaryNode variable 但我完全不知道在这里要做什么 include
  • 在delphi中传递不同枚举类型的混合

    我需要编写一个可以传递不同枚举选择的过程 type TEnumOne eOneFlagOne eOneFlagTwo TEnumTwo eTwoFlagOne eTwoFlagTwo 该方法应该采用不同的枚举 Process eOneFla
  • 如何将 p5.js 画布放入 html div 中

    我正在尝试将 p5 js 添加到网页中某一部分的背景 我是 javascript 新手 不知道如何将这两个部分绑定在一起 您需要在设置中添加代码 确保 html 中的脚本标记中也包含该函数 请注意 您不要在 parent 中添加 var m
  • 使用 Lua 时 C++ 中的堆栈展开

    我最近偶然发现了这个 C Lua 错误 int function for lua lua State L std string s Trouble coming return luaL error L something went wron
  • 用于对所有行进行分页的 Cassandra CQL 方法

    我想以编程方式检查大型 cassandra 表中的所有行 并希望使用 CQL 我知道我可以使用 thrift 来做到这一点 使用 multiget 一次获取 10 000 左右 行 并将最后检索到的密钥传递给下一个 multiget 调用
  • 简单的拼写检查算法

    我的任务是为作业创建一个简单的拼写检查器 但几乎没有提供任何指导 所以想知道是否有人可以帮助我 我并不是在找人为我做作业 但任何关于算法的指导或帮助都会很棒 如果我所问的内容不在该网站的指导范围内 那么我很抱歉 我会去其他地方寻找 该项目加
  • Web项目中的Java文件路径

    我需要从类访问我的 Web 项目中的资源文件 问题是我的开发环境的路径和项目部署时的路径不一样 例如 如果我想在开发时访问一些 css 文件 我可以这样做 File file new File src main webapp resourc
  • 生成最小可执行文件的编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 非常简单的mysql查询不使用索引

    我的 mySQL 表的排序不使用索引 我不知道为什么 我有 CREATE TABLE IF NOT EXISTS test a int 11 NOT NULL b int 11 NOT NULL KEY kk a ENGINE MyISAM