ORDER BY datetime 使查询非常慢

2023-11-29

我正在尝试从多个表中提取数据,当我使用 ORDER BY 日期时间字段时,它会在至少 10 秒后返回结果,但如果我在没有 ORDER BY 的情况下执行相同的查询,那么它会在 2 秒内返回结果。

这是我当前的查询

SELECT
ph.call_subject AS callSubject,
ac.account_name AS accountName,
DATE_FORMAT(ph.trigger_on, "%c/%e/%Y %h:%i %p") AS triggerOn,
ind.name AS industry,
cc.call_code_name AS callCode
FROM phone_calls AS ph
INNER JOIN accounts AS ac ON ph.account_id = ac.account_id
INNER JOIN industries AS ind ON ind.industry_id = ac.industry_id
INNER JOIN call_codes AS cc ON ph.call_code_id = cc.call_code_id
WHERE ac.status = 1 AND ph.status = 1 AND ph.owner_id = 1 AND ac.do_not_call = 0
AND ph.trigger_on BETWEEN '2012-11-19 00:00:00' AND '2013-03-19 23:59:59'
ORDER BY ph.trigger_on ASC LIMIT 0,1000

以下字段均为 INT(11) UNSIGNED 类型

ph.account_id
ac.account_id
ind.industry_id
ac.industry_id
ph.call_code_id
cc.call_code_id
ph.owner_id

以下字段均为tinyint(1)类型

ac.status 
ph.status
ac.do_not_call

该字段是日期时间类型

ph.trigger_on

请注意,accounts 有 300K 条记录,phone_calls 有 500 万条记录。 我该怎么做才能更快地执行此 ORDER BY?请注意,我的所有 where 子句字段、所有 ON 子句和 ph.trigger_on 都已建立索引。我使用的是 InnoDB 存储引擎而不是 MyIsam。

Thanks


请尝试这个:

  1. 在列上建立索引(phone_calls.trigger_on, phone_calls.status, phone_calls.owner_id)叫它pcto

  2. 将 FROM 子句更改为:

    FROM phone_calls AS ph FORCE INDEX (pcto)

这是理想的情况。如果它不起作用,请添加评论,我将为您提供另一种保证有效的方法,并为您提供所需的性能改进。

请注意:在查询中的“每个”列上构建索引并不重要(实际上也没有什么好处)。 MySQL 每个表只能使用一个索引(或更准确地说每个表别名)。您需要构建我们告诉您的索引。

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

ORDER BY datetime 使查询非常慢 的相关文章

  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • C#:SQL 查询生成器类

    在哪里可以找到好的 SQL 查询构建器类 我只需要一个简单的类来构建 SQL 字符串 仅此而已 我需要它用于 C 和 MySql 我真的不需要像 Linq 或 NHibernate 这样的东西 谢谢 由于 Google 将我引导至此页面 我
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • Hibernate 对集合的查询过滤器

    我想执行以下查询 from Item i where i categoryItems catalogId catId 然而 这会产生以下异常 非法尝试取消引用集合 所以我用谷歌搜索 找到了这个 Hibernate 论坛帖子https for
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • InnoDB 因读未提交而死锁! - Java - Glassfish - EJB3(JPA/Hibernate)

    几天来 我在使用 Glassfish EJB3 和 Mysql InnoDB 的 Java 应用程序上遇到了死锁问题 配置 Mysql InnoDB Ver 14 12 Distrib 5 0 51a 适用于 debian linux gn
  • MySQL PHP邮政编码比较具体距离

    我试图找出比较一个邮政编码 用户提供的 和一大堆其他邮政编码 现在大约有 200 个邮政编码 之间的距离的最有效方法 相对于加载时间 但它会随着时间的推移而增加 我不需要任何精确的东西 只是在球场上 我下载了整个美国的邮政编码 csv 文件
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 免费 PHP 登录库 [关闭]

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

    我需要使用 Perl 脚本更改一些 mysql 密码 以下内容在更改数据库条目时有效 但是当我针对 mysql 用户更改修改它时 它将它们重置为空白密码 最后 刷新权限 也很好 但我还没有找到方法 usr bin perl use DBI
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 同一配置文件上的两个不同提供程序

    我在用着实体框架 6 1 0 I have 2 家提供者 MysqlClient 和 SQLServerCE 我需要创建2个不同的DBContext 这迫使我创造2个配置类因为mysql有一些不同的东西 但是当我初始化应用程序时 Datab
  • 如何从shell脚本自动登录MySQL?

    我有一个 MySQL 服务器 其中有一个用户和密码 我想在 shell 脚本中执行一些 SQL 查询而不指定密码 如下所示 config sh MYSQL ROOT root MYSQL PASS password mysql sh sou
  • 一次从多个表中删除行

    我正在尝试将 2 个查询合并为一个这样的查询 result db gt query DELETE FROM menu WHERE name new or die db gt error result db gt query DELETE F

随机推荐

  • PHP5 中 SQLite3 的转义字符串

    为什么这两个功能都让我失败 或者这只是一个幻觉 outputs Hello World Hello World 你应该使用PDO访问您的数据库 因为它有准备好的陈述这比逃跑更安全 也更快 PHP 数据对象 PDO 扩展 定义了一个轻量级的
  • 在进入/离开目录时激活/停用 conda virtualenvs

    pyenv virtualenv提供了一种在进入或离开包含目录的瞬间激活环境的好方法 python version指定要激活的环境的文本文件 它适用于它所在的目录以及其中包含的所有目录 一旦我们将目录更改为它上面的目录 环境就会停用 这允许
  • Windows 应用程序中的文本框仅允许 IP 地址

    我需要一个只允许 IP 地址的文本框 我可以在 Web 应用程序中创建它 但不能在 Windows 应用程序中执行此操作 请帮助我做到这一点 使用此方法来验证IP public bool IsValidIP string addr crea
  • 嵌套 FutureBuilder 与从数据库延迟加载的嵌套调用

    我需要在我可以遵循的两种方法之间选择最佳方法 我有一个 Flutter 应用程序使用sqflite为了保存数据 在数据库内我有两个表 员工 employee id employee name dep id e12 Ada Lovelace
  • Sparklyr:如何根据列将 Spark 表居中?

    我有一个 Spark 表 simx x0 num 1 00 2 00 3 00 x1 num 2 00 3 00 4 00 x788 num 2 00 3 00 4 00 和一个名为simX tbl在连接到此的 R 环境中simx tabl
  • Oracle:将 CTE 与更新子句结合使用

    我可以使用oracle数据库中的公用表表达式进行更新吗 我收到错误ORA 00928 missing SELECT keyword当我尝试这个时 with average as SELECT avg salary FROM instruct
  • 如何在 C 中使用动态多维数组?

    有人知道如何使用 C 来使用动态分配的多维数组吗 那可能吗 从 C99 开始 C 就拥有了带有动态边界的二维数组 如果您想避免在堆栈上分配此类野兽 您应该这样做 您可以轻松地一次性分配它们 如下所示 double A n malloc si
  • 使用 Sonata Admin 处理 Doctrine json_array 字段

    是否有任何 内置 方式来管理教义json array使用 Sonata Admin 的字段 我在 Symfony Sonata 文档 或代码 中找不到任何有用的文档 或相关代码 但我希望我错过了一些东西 理想情况下 我希望看到序列化的键 值
  • 当有大量输入时,Chrome 速度很慢

    在我们的 MVC 5 项目中有一个页面 用户可以在其中检查多个资产 每个资产都由复选框和名称表示 当有大量资源 大约 800 1000 个 时 Chrome 会变得非常慢 有时甚至会显示 页面不负责任 的消息 它看起来像这样 页面部分呈现并
  • 更新时触发更新列

    我写了这个函数和这个触发器 CREATE OR REPLACE FUNCTION test4 RETURNS TRIGGER AS BODY BEGIN UPDATE cf SET vol area alt RETURN null END
  • SQL 中的 IF ELSE 语句

    SELECT S Id S Name S Version S SoftNo FROM SOFTWARE S WITH NOLOCK WHERE IF S Version 0 THEN S Version gt 0 ELSE S Versio
  • Flutter中Completer和Isolates的解释和区别

    我需要在我的应用程序上返回一个 Future 因为我认为我的函数需要太多时间才能完成 所以我有两个可能的答案 使用完成者 or an Isolate 是什么让我选择其中之一 我可以将 Completer 放在我想要的任何地方并相信它会正常工
  • Android 智能手机应用程序支持 Android 平板电脑

    我正在 Android 中创建一个应用程序 最初我只为智能手机制作它 但现在我希望同样的应用程序能够支持 Android 平板电脑 问题在于缩放 它没有缩放到平板电脑屏幕的大小 我使用了 LinearLayout 高度和宽度作为 fill
  • 如何使用 css 更改图像中的蓝色背景选择颜色

    任何人都可以帮助我如何从选择的图像中删除蓝色 你可以从这里看到截图 You can use the user select property though pressing CTRL A will still cause the blue
  • 事件处理程序未添加到新邮件项目中

    我正在尝试创建一个简单的 Outlook 2010 加载项来响应新的附件事件 下面的代码仅在我取消注释 MessageBox Show 行时才有效 但删除它后 似乎没有添加事件处理程序 我在程序流程中缺少什么 这意味着模式消息框会影响事件处
  • 为什么更改 CSS 类名会破坏样式?

    这对我来说真是一件令人头疼的事 我将 Zurb Foundation 与 SASS 以及 Django 开发服务器结合使用 问题是这样的 我有一个带有一些选择器的 SCSS 文件 它们可以按需要工作 但是 如果我改变nameSCSS 和 H
  • 避免退出后返回

    我发现这些问题 其中操作员有与我相同的问题 1 2 但是 我无法解决我的问题 用户按下注销按钮 页面将重定向到index php 但浏览器中的后退按钮会将页面重定向到之前的内容 受登录保护 刷新后 一切正常 后退按钮停止工作 gt 用户被重
  • Websphere 8.5.5 上的 Spring Data JPA + Hibernate

    从 Tomcat 迁移到 WebSphere 时 我遇到了 Spring 4 Hibernate 项目无法正确加载的问题 我已经将应用程序设置为 PARENT LAST 类加载器 并将我的 Hibernate 版本恢复到 4 2 16 因为
  • 重复范围可替换为“*”是什么意思?

    我在 IntelliJ IDEA 中执行了代码分析器 它显示了弱警告 重复范围可由 替换 它在我使用正则表达式模式的下面代码行显示警告 String pattern prefix length suffix 我不确定我的代码在替换后是否可以
  • ORDER BY datetime 使查询非常慢

    我正在尝试从多个表中提取数据 当我使用 ORDER BY 日期时间字段时 它会在至少 10 秒后返回结果 但如果我在没有 ORDER BY 的情况下执行相同的查询 那么它会在 2 秒内返回结果 这是我当前的查询 SELECT ph call