mysql - 查询加载时间过长

标签 mysql sql

 ( SELECT 'no' AS aff,
         ss.orderid, ss.secondaff, ss.saletype, ss.price,
         ss.affiliate, ss.vendor,
         ss.cpa,ss.rebill,ss.salests,ss.fname,ss.lname 
    FROM sales ss 
   WHERE 1=1
     AND ( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade') 
ORDER BY ss.salests DESC ) 
  UNION ALL 
 (   SELECT 'yes' AS aff, ss.orderid,ss.secondaff,ss.saletype,sf.price,
            ss.affiliate,ss.vendor,ss.cpa,ss.rebill,ss.salests,ss.fname,ss.lname 
       FROM salesaff sf 
      INNER JOIN sales ss ON ss.orderid=sf.orderid 
      WHERE 1=1 
        AND ( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade') 
   ORDER BY sf.salests DESC ) 
ORDER BY salests DESC

我需要从给定条件的销售表中选择数据,如果销售表中的vendor=affiliate和上面的sql中的ss.orderid=sf=orderid,也需要从salesaff表中选择数据。

我在一些帮助下写了这篇文章,但查询需要 195 秒才能加载。 sales 表 包含 8000 行,并按 salests、vendor、affiliate、orderid 进行索引。 salesaff 表包含 6000 行,并按 orderid 索引

两个表都包含相同的列。

一些事实: -> 如果我从两者中删除自定义列("is"作为 aff,“否”作为 aff),那么如果我使用限制 100 或其他值,查询将执行。否则加载需要 195 秒。

如果我使用限制 100,则查询将在 2 秒内执行。但不限于此,它会给出错误代码 500。 另外,我还需要总价。有人可以帮助我吗?

最佳答案

第一个效率是子查询中的 order by 不是必需的,除非您在那里放置限制子句。所以试试这个:

(SELECT 'no' AS aff, ss.orderid, ss.secondaff, ss.saletype, ss.price, ss.affiliate, 
         ss.vendor, ss. cpa, ss.rebill, ss.salests, ss.fname, ss.lname 
 FROM sales ss 
 WHERE 1=1 AND ( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade')
) 
UNION ALL 
( SELECT 'yes' AS aff, ss.orderid, ss.secondaff, ss.saletype, sf.price, ss.affiliate, 
         ss.vendor, ss.cpa, ss.rebill, ss.salests, ss.fname, ss.lname 
 FROM salesaff sf INNER JOIN
      sales ss
      ON ss.orderid = sf.orderid 
 WHERE 1=1 AND ( ss.vendor='3kpertrade' OR ss.affiliate='3kpertrade') 
 ) 
ORDER BY salests DESC

关于mysql - 查询加载时间过长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21354074/

相关文章:

PHP表格只显示一行

MySQL 重复键更新未更新

SQL Server 存储过程包含文件语句

PHP/MySQL : Select locations close to a given location from DB

mysql - Laravel,我如何编写此查询来显示具有来自不同表的字段的记录以及如何更新它们?

php - 使用 PHP mt_rand() 而不是 MySQL rand() 以避免查询速度慢

SQL 服务器 .Net CLR 文化

php - 将 MySQL 数据库值相加

php - mysql:将数学运算存储为新数据库

jquery - 在 jQuery/javascript 中将坐标元素序列化为 JSON