如何强制mysql UPDATE查询使用索引?如何让mysql引擎自动使用索引而不是强制使用索引?

2023-12-21

下面是不使用最近创建的复合索引的更新查询/查询计划。解释表明它没有使用名为的复合索引radacctupdate我认为这将使更新查询更快。表上还有其他索引可供其他查询使用。

EXPLAIN UPDATE radacct SET acctstoptime = '2017-01-08 11:52:24',
acctsessiontime = unix_timestamp('2017-01-08 11:52:24') - unix_timestamp(acctstarttime),
acctterminatecause = '', acctstopdelay = 14855646 
WHERE acctstoptime IS NULL AND
nasipaddress = '102.34.56.234' AND acctstarttime <= '2017-01-08 11:52:24';

************* 1. row ***********
           id: 1
  select_type: SIMPLE
        table: radacct
         type: range
possible_keys: acctstarttime,acctstoptime,nasipaddress,radacctupdate
          key: nasipaddress
      key_len: 17
          ref: const
         rows: 94
        Extra: Using where; Using MRR

下边是show index from <table> output

+---------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name        | Seq_in_index | Column_name     | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| radacct |          0 | PRIMARY         |            1 | radacctid       | A         |    29299212 |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | username        |            1 | username        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | framedipaddress |            1 | framedipaddress | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | acctsessionid   |            1 | acctsessionid   | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | acctsessiontime |            1 | acctsessiontime | A         |        NULL |     NULL | NULL   | YES  | BTREE      |         |               |
| radacct |          1 | acctstarttime   |            1 | acctstarttime   | A         |        NULL |     NULL | NULL   | YES  | BTREE      |         |               |
| radacct |          1 | acctstoptime    |            1 | acctstoptime    | A         |        NULL |     NULL | NULL   | YES  | BTREE      |         |               |
| radacct |          1 | nasipaddress    |            1 | nasipaddress    | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | acctuniqueid    |            1 | acctuniqueid    | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | radacctupdate   |            1 | acctstoptime    | A         |        NULL |     NULL | NULL   | YES  | BTREE      |         |               |
| radacct |          1 | radacctupdate   |            2 | nasipaddress    | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               |
| radacct |          1 | radacctupdate   |            3 | acctstarttime   | A         |        NULL |     NULL | NULL   | YES  | BTREE      |         |               |
+---------+------------+-----------------+--------------+-----------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

可以使用以下方法强制更新查询使用索引:

UPDATE radacct use index(indexname_indx100) 
SET acctstoptime=  '2017-01-08 14:58:27',
acctsessiontime =  unix_timestamp('2017-01-08 14:58:27')-                                   unix_timestamp(acctstarttime),acctterminatecause = '',              acctstopdelay=1483866808
WHERE acctstoptime IS NULL AND nasipaddress='22.194.36.2' AND
acctstarttime <= '2017-01-08 14:58:27';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制mysql UPDATE查询使用索引?如何让mysql引擎自动使用索引而不是强制使用索引? 的相关文章

随机推荐

  • 将从接口类型获取的 MethodInfo 对象转换为 C# 中实现类型上相应的 MethodInfo 对象?

    我的问题是 如果我有 MethodInfo 对象 用于从接口类型获取的方法 并且我还有实现此接口的类的 Type 对象 但它通过显式实现来实现所述方法 如何正确获取该类中实现方法对应的MethodInfo对象 我需要这样做的原因是实现方法可
  • iPhone中的套接字编程示例[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在学习 Objective C
  • 工头从手动路径开始

    我正在尝试在heroku 上运行foreman 这是一个常见的错误 但是我仍然没有找到解决方案 这里显然缺少一条路径 c 程序文件 ruby 1 9 2 bin foreman C Program 错误的解释器 没有这样的文件或目录 我的问
  • 获取 ajax 请求时 Rails 中的 500 内部服务器错误

    我正在尝试从表单创建记录 我使用railscast 136 作为基础工作 当我尝试提交时 我收到 500 错误 因为缺少部分内容 我已经创建了控制器相关的 javascript 视图 但它请求一个与模型同名的视图 错误信息 渲染约会 cre
  • C++ Fstream 替换特定行?

    好吧 我不知道如何做到这一点 我设法找到了我想要更换的线路 但我不知道如何更换它 假设一个名为 file txt 的文件包含以下内容 1 2 3 4 5 我想替换第 3 行 使其显示为 4 而不是 3 我该怎么做 include
  • 如何实现版本号列自动递增?

    在 SQL Server 中实现基于同一个表中的另一个字段自动递增的字段的好方法是什么 想象一个VersionNumber自动递增的字段1 to n 对于每个值列数DocumentID 要求 VersionNumber 必须从 1 开始 并
  • 使用身份验证=Active Directory 集成的 EF Core 3.1

    更新1 我可以使用以下连接字符串使其工作 Server tcp mydatabaseserver database windows net 1433 Initial Catalog mydbname 并实现一个拦截器 如中提到的本文 htt
  • Xcode UI 测试如何在自定义类文本字段中输入文本

    在我的项目中开始使用 Xcode 进行 UI 测试时遇到了障碍 有一个子类UITextField called RSCustomTextField其中有一些 UI 自定义 哪个添加到RSSearchHeadView 其中包含文本字段和按钮
  • 如何在 React 中过滤或搜索对象数组?

    当我输入搜索某个事件或主持人时 出现错误 这是搜索和过滤功能的所在 错误位于此处 handleSearch query gt this setState searchQuery query this getPagedData getPage
  • Electron:尝试设置“nativeTheme.themeSource”,但“nativeTheme”未定义

    我无法设置themeSource我的电子应用程序 平台是Windows 8 1 const electron require electron const app electron app if app app on ready funct
  • 我是否必须使用 ngrok 来公开 MERN 堆栈的前端和后端才能使 CRUD 操作正常工作?

    我正在本地计算机上开发 MERN 应用程序 前端位于 localhost 3000 后端位于 localhost 3003 我的前端代码中有一个请求 如下所示 axios get localhost 3000 comments params
  • 如何使用密码自动登录 Windows 7

    我正在开发基于 Windows 7 Ultimate 的 Kiosk 应用程序 I need 使用远程桌面连接连接到信息亭 因此用户名和 似乎需要密码 启用自助服务终端的自动登录 知道如何实现这些功能吗 Thanks 看来你已经有了答案 但
  • MVC 5 属性路由包罗万象

    如何使用 MVC 中的新属性路由创建捕获所有路由 我试过这个 Route pagenode Order 999 但是当我有一条命名路线时 Route contact 我得到了 Multiple controller types were f
  • 使用AVPlayer播放加密视频

    我正在实现一个包含视频播放器的应用程序 由于某些原因 视频文件使用 AES 加密 并且这些文件的大小可能相当大 以避免将其作为一个整体加载到 RAM 中 我正在寻找一些用 AVPlayer 来播放它的方法 Tried 1 按照此处建议的自定
  • 可以编译Scala程序但无法运行它们

    我可以在终端中使用 scalac 编译 scala 程序 但收到警告 Charless Macintosh src Charles scalac hello scala Charless Macintosh src Charles scal
  • 以正确的尺寸打印 HTML5 Canvas

    是否有正确的方法来指定画布元素的尺寸 例如以毫米为单位 以便如果我将其打印出来它将具有正确的尺寸 我试过这个简单的例子
  • 输出子句 VS 触发器

    在我们的数据库中 大多数表都有一个dbupddate字段表示datetime最后的INSERT or UPDATE应用在该行 为了避免该字段有错误的值 存在触发器 有时AFTER 有时INSTEAD OF 这确保最终该值是正确的 而不是有人
  • EF 4.1 Code First 中的 XML 数据类型

    我想使用 SQL Serverxmltype 作为实体类的列类型 根据这个线程 https social msdn microsoft com Forums en US 2d6b75ee a1b7 44bf b5f3 d32b12f2db6
  • 无法连接到 Elasticsearch(通过 Curl)

    我最近安装了 Elasticsearch 前几天一切都运行良好 但不知何故今天它停止工作了 当我启动服务时 它声称没问题 sudo etc init d elasticsearch start Starting Elasticsearch
  • 如何强制mysql UPDATE查询使用索引?如何让mysql引擎自动使用索引而不是强制使用索引?

    下面是不使用最近创建的复合索引的更新查询 查询计划 解释表明它没有使用名为的复合索引radacctupdate我认为这将使更新查询更快 表上还有其他索引可供其他查询使用 EXPLAIN UPDATE radacct SET acctstop