我正在对Cloud SQL实例(类型D1 mysql 5.6.16)执行以下查询,其中需要11秒才能完成。在我的共享主机上运行在mysql(v5.5.35)上的相同索引和内容的完全相同的数据库(在规范方面没有什么特别之处),查询只需0.068秒。
查询:
SELECT casenotes.caseworkerID,COUNT(*)
FROM emails LEFT JOIN (casenotes) ON (emails.ID=casenotes.subtypeID)
WHERE emails.type='sent' AND casenotes.type='email' AND
emails.datetime > '2014-05-01'
GROUP BY casenotes.caseworkerID;
这是Cloud SQL服务器上的解释结果
id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE casenotes ref type,subtypeID,caseworkerID type 22 const 6447 Using index condition; Using where; Using temporary; Using filesort 1 SIMPLE emails eq_ref PRIMARY,ID,type,datetime PRIMARY 8 casework_test.casenotes.subtypeID 1 Using where
这是我共享主机上的解释结果
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE casenotes ref type,subtypeID type 22 const 6451 Using where; Using temporary; Using filesort 1 SIMPLE emails eq_ref PRIMARY,type,datetime PRIMARY 8 zahawizs_caseworker.casenotes.subtypeID 1 Using where
有没有人建议我如何调整我的select语句或Cloud SQL服务器实例以更快地返回它。
答案 0 :(得分:1)
对于其他遇到此问题的人,我发现有问题的表在MyISAM中,与INnodb联系已大大加快搜索速度。显然,云SQL缓存更适合InnoDB表。
这不是一个100%的解决方案,但是在大型数据集上,查询仍然需要将近3秒才能完成,因此任何其他建议都将非常受欢迎。