目前手头有个查询:

SELECT LPP.learning_project_pupilID, SL.serviceID, MAX(LPPO.start_date), SUM(LPPOT.license_mode_value) totalAssignedLicenses
FROM t_services_licenses SL
INNER JOIN t_pupils_offers_services POS ON POS.service_licenseID = SL.service_licenseID
INNER JOIN j_learning_projects_pupils_offers LPPO ON LPPO.learning_project_pupil_offerID = POS.learning_project_pupil_offerID
INNER JOIN j_learning_projects_pupils LPP ON LPPO.learning_project_pupilID = LPP.learning_project_pupilID
INNER JOIN j_learning_projects_pupils_offers_tracking LPPOT ON LPPOT.pupil_offer_serviceID = POS.pupil_offer_serviceID
INNER JOIN t_filters_items FI ON FI.itemID = LPP.learning_project_pupilID_for_filter_join
WHERE FI.filterID = '4dce2235-aafd-4ba2-b248-c137ad6ce8ca'
AND SL.serviceID IN ('OnlineConversationClasses', 'TwentyFourSeven')
GROUP BY LPP.learning_project_pupilID, SL.serviceID

查询非常慢,需要耗时半个多小时之多。

下面是表的一些详细信息:

t_filters_items表:

j_learning_projects_pupils_offers_tracking表:

j_learning_projects_pupils表:

j_learning_projects_pupils_offers表:

t_pupils_offers_services表:

t_services_licenses表:

执行计划如下:

sql脚本如下:

DROP TABLE IF EXISTS t_services_licenses;
CREATE TABLE t_services_licenses (
service_licenseID varchar(36) NOT NULL,
serviceID varchar(36) NOT NULL,
disciplineID varchar(36) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
serial_key varchar(50) DEFAULT NULL,
deleted tinyint(3) unsigned NOT NULL DEFAULT '',
PRIMARY KEY (service_licenseID),
KEY FK_t_services_licenses_serviceID (serviceID),
KEY IDX_disciplineID (disciplineID),
KEY IDX_deleted (deleted),
CONSTRAINT FK_t_services_licenses_serviceID FOREIGN KEY (serviceID) REFERENCES p_services (serviceID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS t_pupils_offers_services;
CREATE TABLE t_pupils_offers_services (
pupil_offer_serviceID varchar(36) NOT NULL,
learning_project_pupil_offerID varchar(36) NOT NULL,
service_licenseID varchar(36) NOT NULL,
triggered_pupil_offer_serviceID varchar(36) DEFAULT NULL,
triggered_right_of_use_typeID int(10) unsigned DEFAULT NULL,
triggered_right_of_use_value bigint(20) unsigned DEFAULT NULL,
PRIMARY KEY (pupil_offer_serviceID),
KEY FK_t_pupils_offers_services_offer_serviceID (service_licenseID),
KEY IDX_ID_SERVICE (learning_project_pupil_offerID,service_licenseID),
CONSTRAINT FK_t_pupils_offers_services_lppoID FOREIGN KEY (learning_project_pupil_offerID) REFERENCES j_learning_projects_pupils_offers (learning_project_pupil_offerID) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT FK_t_pupils_offers_services_slID FOREIGN KEY (service_licenseID) REFERENCES t_services_licenses (service_licenseID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS j_learning_projects_pupils_offers;
CREATE TABLE j_learning_projects_pupils_offers (
learning_project_pupil_offerID varchar(36) NOT NULL,
learning_project_pupilID bigint(20) unsigned NOT NULL,
offerID varchar(36) NOT NULL,
start_date datetime NOT NULL,
end_date datetime NOT NULL,
deleted tinyint(3) unsigned NOT NULL DEFAULT '',
interruption_count int(10) unsigned NOT NULL DEFAULT '',
PRIMARY KEY (learning_project_pupil_offerID),
KEY FK_j_learning_projects_pupils_offers_projID (learning_project_pupilID),
KEY FK_j_learning_projects_pupils_offers_offerID (offerID),
KEY IDX_start_date (start_date) USING BTREE,
KEY IDX_end_date (end_date) USING BTREE,
KEY IDX_deleted (deleted),
CONSTRAINT FK_LPPO_LP FOREIGN KEY (learning_project_pupilID) REFERENCES j_learning_projects_pupils (learning_project_pupilID) ON DELETE CASCADE,
CONSTRAINT FK_LPPO_O FOREIGN KEY (offerID) REFERENCES t_offers (offerID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS j_learning_projects_pupils;
CREATE TABLE j_learning_projects_pupils (
learning_project_pupilID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
user_actorID varchar(36) NOT NULL,
active tinyint(3) unsigned DEFAULT '' COMMENT '',
disciplineID varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
deleted tinyint(3) unsigned NOT NULL DEFAULT '',
active_work_reminder tinyint(3) unsigned NOT NULL DEFAULT '',
enable_change_of_reminder_settings tinyint(3) unsigned NOT NULL DEFAULT '',
enable_objective_redefinition tinyint(3) unsigned NOT NULL DEFAULT '',
enable_sequence_removing tinyint(3) unsigned NOT NULL DEFAULT '',
send_detailed_report tinyint(3) unsigned NOT NULL DEFAULT '',
send_learning_path tinyint(3) unsigned NOT NULL DEFAULT '',
send_test_result tinyint(3) unsigned NOT NULL DEFAULT '',
weekly_availability_time bigint(20) unsigned NOT NULL DEFAULT '',
working_reminder_periodicityID tinyint(3) unsigned NOT NULL,
working_reminder_periodicity_value bigint(20) unsigned NOT NULL DEFAULT '',
registration_date datetime NOT NULL,
current_free_mode_learning_levelID bigint(20) unsigned DEFAULT NULL,
enable_change_of_difficulty_settings tinyint(3) unsigned NOT NULL DEFAULT '',
was_activated tinyint(3) unsigned NOT NULL DEFAULT '',
was_connected tinyint(3) unsigned NOT NULL DEFAULT '',
snapshot_running tinyint(3) unsigned NOT NULL DEFAULT '',
visible tinyint(3) unsigned NOT NULL DEFAULT '',
tempID varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
learning_project_pupilID_for_filter_join varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
objectives_expected_time_on_formation smallint(5) unsigned NOT NULL DEFAULT '',
objectives_expected_time_enabled tinyint(3) unsigned NOT NULL DEFAULT '',
cecr_level tinyint(3) unsigned NOT NULL DEFAULT '',
enable_show_popup_phone_lesson_and_live_tutoring TINYINT(3) UNSIGNED NOT NULL DEFAULT '',
PRIMARY KEY (learning_project_pupilID),
KEY user_actorID (user_actorID),
KEY FK_j_learning_projects_pupils_level (current_free_mode_learning_levelID),
KEY IDX_statuses (was_activated,was_connected,deleted,active),
KEY IDX_LPP_TEMPID (tempID),
KEY IDX_LPP_TEMPFILTERID (learning_project_pupilID_for_filter_join),
KEY IDX_DAVA (deleted,active,visible,active_work_reminder),
KEY IDX_discipline_v (disciplineID,visible) USING BTREE,
CONSTRAINT FK_j_learning_projects_pupils_discipline FOREIGN KEY (disciplineID) REFERENCES p_disciplines (disciplineID),
CONSTRAINT FK_j_learning_projects_pupils_j_users_actors FOREIGN KEY (user_actorID) REFERENCES j_users_actors (user_actorID),
CONSTRAINT FK_j_learning_projects_pupils_level FOREIGN KEY (current_free_mode_learning_levelID) REFERENCES p_learning_levels (learning_levelID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS j_learning_projects_pupils_offers_tracking;
CREATE TABLE j_learning_projects_pupils_offers_tracking (
learning_project_pupil_offer_trackingID bigint(20) unsigned NOT NULL AUTO_INCREMENT,
pupil_offer_serviceID varchar(36) NOT NULL,
license_mode_typeID int(10) unsigned NOT NULL,
license_mode_value bigint(20) unsigned NOT NULL DEFAULT '',
effective_consumption_value bigint(20) unsigned NOT NULL DEFAULT '',
PRIMARY KEY (learning_project_pupil_offer_trackingID),
KEY FK_j_learning_projects_pupils_offers_tracking_posID (pupil_offer_serviceID),
CONSTRAINT FK_j_learning_projects_pupils_offers_tracking_posID FOREIGN KEY (pupil_offer_serviceID) REFERENCES t_pupils_offers_services (pupil_offer_serviceID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS t_filters_items;
CREATE TABLE t_filters_items (
filterID varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
itemID varchar(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
row_order bigint(20) unsigned NOT NULL DEFAULT '',
selected tinyint(3) unsigned NOT NULL DEFAULT '',
PRIMARY KEY (filterID,itemID),
CONSTRAINT FK_t_filters_items_ID FOREIGN KEY (filterID) REFERENCES t_filters (filterID) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MYSQL查询优化的更多相关文章

  1. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析

    Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析     Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析1 存 ...

  2. MySQL查询优化之explain的深入解析

    在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要执行的行数.expla ...

  3. 1025WHERE执行顺序以及MySQL查询优化器

    转自http://blog.csdn.net/zhanyan_x/article/details/25294539 -- WHERE执行顺序-- 过滤比较多的放在前面,然后更加容易匹配,从左到右进行执 ...

  4. MySQL查询优化:查询慢原因和解决技巧

    在开发的朋友特别是和mysql有接触的朋友会碰到有时mysql查询很慢,当然我指的是大数据量百万千万级了,不是几十条了,下面我们来看看解决查询慢的办法. MySQL查询优化:查询慢原因和解决方法 会经 ...

  5. mysql查询优化器为什么可能会选择错误的执行计划

    有可能导致mysql优化器选择错误的执行计划的原因如下: A:统计信息不准确,mysql依赖存储引擎为其提供的统计信息来评估成本,然而有的存储引擎提供的信息是准确的,有的引擎提供的可能就偏差很大,如: ...

  6. Mysql查询优化器

    Mysql查询优化器 本文的目的主要是通过告诉大家,查询优化器为我们做了那些工作,我们怎么做,才能使查询优化器对我们的sql进行优化,以及启示我们sql语句怎么写,才能更有效率.那么到底mysql到底 ...

  7. MySQL查询优化 (一)

    以下的文章主要讲述的是MySQL查询优化的5个十分好用方法,熟悉SQL语句的人都清楚,如果要对一个任务进行操作的话,SQL语句可以有很多种相关写法,但是不同的写法查询的性能可能会有天壤之别. 本文列举 ...

  8. MySQL查询优化:连接查询排序limit

    MySQL查询优化:连接查询排序limit(join.order by.limit语句) 2013-02-27      个评论       收藏    我要投稿   MySQL查询优化:连接查询排序 ...

  9. MySQL查询优化之explain

    在分析查询性能时,考虑EXPLAIN关键字同样很管用.EXPLAIN关键字一般放在SELECT查询语句的前面,用于描述MySQL如何执行查询操作.以及MySQL成功返回结果集需要执行的行数.expla ...

  10. Mysql查询优化器浅析

    --Mysql查询优化器浅析 -----------------------------2014/06/11 1 定义    Mysql查询优化器的工作是为查询语句选择合适的执行路径.查询优化器的代码 ...

随机推荐

  1. Git从零开始怎么学?

    最近,公司项目代码版本库管理,全部从svn 迁移到Git 最近了解了一段时间 近期会把整个Git使用过程陆续分享 如何从零开始使用Git

  2. Linux hostname对Oracle实例以及监听的影响

    在Linux平台中,对hostname的修改,是否对ORACLE数据库实例或监听进程有影响呢?如果有影响,又要如何解决问题呢?另外/etc/hosts下相关内容的修改,是否也会影响实例或监听呢?这里涉 ...

  3. MySQL入门(一)

    最近一直都在搞新员工的培训材料,MySQL的培训PPT我居然写了100多页,我都佩服我自己的毅力了.不如现在把这些总结一下,慢慢写到博客里,供入门者参考. 一 关系型数据库 关系型数据库的理论提出于上 ...

  4. C++ 中 typename

    声明template参数时, 前缀关键字class和typename可以互换; 使用关键字typename标识嵌套从属类型名称, 但不需在基类列表和成员初始化列表内使用. 从属名称(dependent ...

  5. USACO1.5Superprime Rid[附带关于素数算法时间测试]

    题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们.农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组 ...

  6. QC学习一:Windows环境中Quality Center 9.0安装详解

    一.安装前准备 1.安装环境:windows XP.SQL Server2005 2.准备安装文件:Quality Center 9.0 (qc10以上,包括qc10,qc只支持安装在服务器操作系统上 ...

  7. win7旗舰版 中文64位 产品密钥(序列号)

    无需破解即可激活Windows 7旗舰版的"神Key". 第一枚"神Key":TFP9Y-VCY3P-VVH3T-8XXCC-MF4YK: 第二枚"神 ...

  8. java 24 - 4 GUI之创建数据转移窗口

    需求: 把文本框中的数据,通过点击按钮,转移到文本域中.  同时清空文本框中的数据 代码:(步骤都注释了) public class FrameDemo4 { public static void m ...

  9. 转: Eclipse 分屏显示同一个文件

    Eclipse 分屏显示同一个文件   场景 : 某个类很大,可能有数千行.当你想要将类开头部分与中间或者靠后的部分进行对比时,请follow如下步骤: Window -> Editor -&g ...

  10. 《ASP.NET MVC 5 高级编程(第5版)》

    第1章.入门 本章主要内容: ASP.NET MVC 5概述 其应用程序的创建方法 其应用程序的及结构 概述:将MVC设计模式应用于ASP.NET框架 ASP.NET 1.0支持两层抽象: Syste ...