当前位置: 首页 > 知识库问答 >
问题:

如何改进“发送数据”时间长的查询

姚永年
2023-03-14

有问题的查询是

select count(*)
from t_fault tf
where err_status = 1 and
      report_type = 2 and
      solve_status = 2 and
      fault_code = 8 and
      tf.record_time between '2018-01-12 00:00:00' and '2018-01-18 23:59:59';
+----------------------+----------+
| Status               | Duration |
+----------------------+----------+
| starting             | 0.000070 |
| checking permissions | 0.000005 |
| Opening tables       | 0.000014 |
| init                 | 0.000021 |
| System lock          | 0.000006 |
| optimizing           | 0.000011 |
| statistics           | 0.000080 |
| preparing            | 0.000017 |
| executing            | 0.000002 |
| Sending data         | 0.500267 |
| end                  | 0.000011 |
| query end            | 0.000006 |
| closing tables       | 0.000011 |
| freeing items        | 0.000086 |
| cleaning up          | 0.000012 |
+----------------------+----------+
 CREATE TABLE `t_fault` (
  `id` varchar(36) NOT NULL,
  `pile_id` varchar(19) DEFAULT NULL,
  `report_type` int(2) DEFAULT '0',
  `fault_code` int(2) DEFAULT NULL,
  `err_code` int(2) DEFAULT NULL,
  `err_status` int(2) DEFAULT NULL,
  `solve_status` int(2) DEFAULT NULL,
  `create_time` datetime DEFAULT NULL,
  `record_time` datetime DEFAULT NULL,
  `fault_type` int(8) DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `solve_time` datetime DEFAULT NULL,
  `operator_id` varchar(19) DEFAULT NULL,
  `inter_no` smallint(6) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `i_fault_common` (`err_status`,`report_type`,`solve_status`,`fault_code`,`record_time`),
  KEY `i_fault_pile_common` (`pile_id`,`err_status`,`report_type`,`solve_status`,`fault_code`,`record_time`),
  KEY `i_fault_operator_common` (`operator_id`,`err_status`,`report_type`,`solve_status`,`fault_code`,`record_time`),
  KEY `i_fault_operator_pile_common` (`operator_id`,`pile_id`,`err_status`,`report_type`,`solve_status`,`fault_code`,`record_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
explain select count(*) from t_fault tf where err_status = 1 and report_type = 2 and solve_status =2 and fault_code =8 and tf.record_time between '2018-01-12 00:00:00' and '2018-01-18 23:59:59';
+----+-------------+-------+-------+----------------+----------------+---------+------+---------+--------------------------+
| id | select_type | table | type  | possible_keys  | key            | key_len | ref  | rows    | Extra                    |
+----+-------------+-------+-------+----------------+----------------+---------+------+---------+--------------------------+
|  1 | SIMPLE      | tf    | range | i_fault_common | i_fault_common | 26      | NULL | 1584048 | Using where; Using index |
+----+-------------+-------+-------+----------------+----------------+---------+------+---------+--------------------------+

因此,如何通过一些技巧来加快有问题查询的“发送数据”。

共有1个答案

逄嘉木
2023-03-14

此表包含8,944,637行。

你的桌子好重。我建议看看范围划分。

 类似资料:
  • 有时候,由于各种原因会导致接口测试失败,此时我们需要查看测试时实际发送了什么数据。 在控制台中查看 为了尽可能方便地查看发送数据,我们已经将各个阶段的日志打印在浏览器的控制台中了,类似下面的效果: 查看插件背景页的网络请求面板 接口测试需要安装一个浏览器插件,XHR Proxy Tool,这是一个跨域请求的插件,本地 localhost 地址也是可以直接请求到的,实际的网络请求是这个插件发出的。可

  • 看起来它不应该那样工作。我在发送第一个数据包(大小为10字节,每次线性增加10字节)后启动时钟(在客户端),并在发送最后一个数据包后关闭时钟。 在服务器端(数据包的接收者),我在收到第一个数据包后启动时钟,在收到最后一个数据包后停止。为什么发送时间比接收时间长? 客户端模型代码(UDP发送方) 以及UDP服务器(接收器)的代码 编译并运行服务器 编译并运行服务器 样本结果: 客户(发送方) 服务器

  • 问题内容: 所以我一直在使用node.js(Js客户端和Android客户端)中的socket.io发送二进制数据时遇到麻烦。 没有太多信息,也没有: http://socket.io/blog/introducing-socket- io-1-0/ http://socket.io/get-started/chat/ 我需要使用套接字io发送我创建并填充的二进制数组。 他们给出的唯一代码如下:

  • 我需要改进这个sql的执行时间,这是我此刻正在使用的代码。对于小表,它表现良好,在第一个表的参与者,我有一个平均5000个条目。第二个,有6万多个。代码在第一个表中执行搜索,按ID进行筛选,并将与第二个表相同的ID分组,生成单个字符串。 第一个表的结构如下 第二个表是 有人能给我一个想法,如何提高这个sql的搜索时间,因为今天生成完整的查询需要10多分钟。欢迎任何建议。

  • 问题内容: 我是Redis的新手,但我不知道如何创建和更改到另一个Redis数据库。 我该怎么做呢? 问题答案: 默认情况下,有16个数据库(索引从0到15),您可以使用select命令在它们之间导航。可以通过设置在redis配置文件中更改数据库数量。 默认情况下,它选择数据库。要选择一个指定的,使用 (选择数据库2)

  • 问题内容: 是否可以获取旧的运行过程的开始时间?如果今天不是开始日期,似乎会报告日期(而不是时间),如果今年不是开始日期,则只会报告日期。旧工艺会永远失去精度吗? 问题答案: 您可以指定格式器并使用,例如以下命令: 上面的命令将输出所有进程,并带有格式化程序以获取PID,命令运行以及启动日期和时间。 示例(从Debian / Jessie命令行) 您可以阅读的联机帮助页或查看Opengroup的其