mysql - 以比此查询更快的方式计算数量

标签 mysql sql

我需要从数据库中计算总可用数量,为此我需要连接几个表。我无法粘贴我的整个查询,但以下是基本结构:

select sum(qty) as qty, field
from
(
  (
      select SUM(table1.qty) as qty , field
       from
       table1
       left join table2 on table1.field = table2.field
       left join table3 on table3.field = table2.field
       where condition
       group by fieldname
   )
   UNION ALL
   (
       selecy SUM(table1.qty) as qty,field 
       from
       table1
       left join table2 on table1.field = table2.field
       left join table3 on table3.field = table2.field
       where condition
       group by fieldname
   )
   UNION ALL
   (
       select SUM(table1.qty) as qty, field
       from
       table1
       left join table2 on table1.field = table2.field
       left join table3 on table3.field = table2.field
       where condition
       group by fieldname
   )
  ...
  ..
  12 times
) as temp
LEFT JOIN another_main_table ON another_main_table.field = temp.field

我已经处理了每个表的索引,但是有些联合花费的时间比预期的要长。此查询中使用了大约 45 个表,所有表都经过了全面检查。有些表有大约 260 万条记录。 你能建议我如何在 1/2 秒内得到结果吗?截至目前,我将在大约一分钟内得到结果。

最佳答案

由于您给出的示例无法正确证明正确的解决方案,但如果我粗略检查您的查询,您仍然使用了 LEFT JOIN,因此与 INNER JOIN 相比,这将花费更长的时间。

因此,如果您的数据允许,请使用 INNER JOIN

关于mysql - 以比此查询更快的方式计算数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987971/

相关文章:

sql - 将值从 SQL Server 导出到 txt 文件

MySQL 错误代码 : 1054. 'fieldname' 中的未知列 'field list'

php - 从保存的行返回值

php - 面临将值放入聊天页面 php 的问题

php - 创建安全的 MYSQLI 登录脚本?

mysql - "AS"clsql中的伪运算符语法

php - 导出部分 mysql 元数据,可能吗?

mysql - 用于 ubuntu 14.04 的一个文件中的 ansible mysql 配置

php - 在所有 mysql 表中添加一个新列

mysql - 关于数据库关系和外键的最佳实践