MySql性能问题

标签 mysql performance

我的这个查询需要 45 秒才能执行。我对正在搜索的所有字段都有索引。

SELECT SQL_CALC_FOUND_ROWS g.app_group_id, g.id as g_id, p.`id` as form_id, 
       a.`user`   as activity_user,a.`activity` as app_act ,a.* 
FROM grouped g 
INNER JOIN 
(SELECT max(id) as id, app_group_id FROM grouped GROUP BY app_group_id) g1 
ON g1.app_group_id = g.app_group_id AND g.id = g1.id 
INNER JOIN form p 
on p.id = g.id 
    INNER JOIN 
    (SELECT a.id, a.date_time, a.user, a.activity FROM log a) a 
    ON g.id = a.id 
WHERE p.agname like '%blahblah%' and p.`save4later` != 'y' 
      and a.activity = 'APP       Submitted' or a.activity = 'InstaQUOTE' 
ORDER BY app_group_id DESC limit 0, 100

在我的解释中,它显示我正在使用“使用临时”;使用文件排序

索引是:

事件表:PRIMARY Activity_id INDEX date_time INDEX id INDEX Activity INDEX user

表格:PRIMARY id INDEX id_md5 INDEX dateadd INDEX dateu INDEX agent_or_underwriter INDEX

分组表:UNIQUE id INDEX app_group_id INDEX agent_or_underwriter save4later

非常感谢任何建议

非常感谢

最佳答案

首先,尝试一下这个:

SELECT
  g.app_group_id,
  g.id AS g_id,
  p.id AS form_id,
  a.user AS activity_user,
  a.activity AS app_act,
  a.id,
  a.date_time
FROM grouped g 
INNER JOIN 
  (SELECT MAX(id) AS id, app_group_id FROM grouped GROUP BY app_group_id) g1 
  ON g1.app_group_id = g.app_group_id AND g.id = g1.id 
INNER JOIN form p 
  ON p.id = g.id 
INNER JOIN log a 
  ON g.id = a.id 
WHERE p.agname LIKE '%blahblah%'
  AND p.save4later != 'y'
  AND a.activity IN('APP       Submitted', 'InstaQUOTE')
LIMIT 0, 100

我删除了一个不必要的子查询。还删除了 ORDER BY。我想你可以不排序,这一定会大大加快查询速度。

我还删除了 SQL_CALC_FOUND_ROWS,因为正如我之前提到的,发出单独的 COUNT(*) 查询应该会更快。

关于MySql性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230931/

相关文章:

c++ - while(1) 对比。 for (;;) 有速度差异吗?

mysql - 如何根据值更改 mysql 输出

c++ - X DevAPI mysqlx::Session() over linux socket 失败并显示 “CDK Error: unexpected message”

java - Hibernate:仅从一张表中选择所有内容,而不是从 3 个连接表中选择所有内容

ruby-on-rails - Rails Windows Vagrant 响应时间非常慢

c++ - cos(atan2(y,x)) 的精度与使用复数 <double> 的对比,C++

Python 性能 : Try-except or not in?

mysql - 为连接语句创建索引

php - 是否应该在没有占位符的情况下使用准备好的语句

c# - 压缩 if-elseif-else 语句以节省比较