如何大幅减少mySQL查询处理时间?

如何大幅减少mySQL查询处理时间?,mysql,query-optimization,Mysql,Query Optimization,我有一个问题,我在mySQL中的查询正在处理中,大约在报告最终出现之前8-10分钟。我已经创建了一些索引,时间已经下降到2-3分钟。但这似乎也太长了 是否可以通过某种方式与ElasticSearch、Sphinx或类似的东西进行集成,以支持mySQL进行困难的请求 大约有10个表,每个表有30-40k行和9-10列 全分贝大小小于100米。数据主要是INT、DOUBLE或VARCHAR 请求是这样的: SELECT SUM(`column1`) AS `sum` FROM `table1` L

我有一个问题,我在mySQL中的查询正在处理中,大约在报告最终出现之前8-10分钟。我已经创建了一些索引,时间已经下降到2-3分钟。但这似乎也太长了

是否可以通过某种方式与ElasticSearch、Sphinx或类似的东西进行集成,以支持mySQL进行困难的请求

  • 大约有10个表,每个表有30-40k行和9-10列
  • 全分贝大小小于100米。数据主要是INT、DOUBLE或VARCHAR
  • 请求是这样的:

    SELECT SUM(`column1`) AS `sum` 
    FROM `table1` LEFT JOIN `table2` ON `table1`.`id` = `table2`.`id` 
    WHERE `column2` = ?s 
      AND `table2`.`datetime` BETWEEN STR_TO_DATE(?s, '%Y-%m-%d %H:%i:%s') AND STR_TO_DATE(?s, '%Y-%m-%d %H:%i:%s')```
    

  • 看起来我的代码中有一个问题,因为处理时间占用了额外的周期,使得请求重复了数百次


    感谢您的社区支持,我现在知道今后如何在这方面形成我的问题。

    任何查询优化问题都应该包括查询中每个表的
    SHOW CREATE TABLE
    输出。帮助我们帮助您-不要让我们猜测您当前拥有的数据类型和索引。您还应该为您的查询提供
    EXPLAIN
    报告。@BillKarwin感谢您的帮助。我试试看。感谢您的支持。我不确定这会有多大帮助,如果有的话,但是如果查询的WHERE子句中右表的条件不是NULL,那么左连接就没有意义了。在最好的情况下,查询优化器将为您将其转换为内部联接,在最坏的情况下,它将忽略该条件可能显著减少您所检查的行的情况。另外,按照您编写查询的方式,如果没有所需的信息,我们只能猜测哪个表实际包含
    column2
    column1
    。请求类似于我建议您显示完整的查询,而不是“简化”的查询