Значительная разница во времени запроса на Cloud SQL и локальном сервере

Я выполняю следующий запрос в экземпляре 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, чтобы вернуть это быстрее.


person SimonSmethMac    schedule 17.06.2014    source источник


Ответы (1)


Для всех, у кого есть проблемы с этим, я обнаружил, что рассматриваемые таблицы были в MyISAM, цепочка к INnodb значительно ускорила поиск. По-видимому, облачный кеш SQL лучше подходит для таблиц InnoDB.

Это не стопроцентное решение, хотя для большого набора данных запрос все еще занимает около 3 секунд в облачном SQL, поэтому любые другие предложения будут очень благодарны.

person SimonSmethMac    schedule 18.06.2014
comment
Да, пожалуйста, не используйте MyISAM. InnoDB обеспечивает поддержку транзакций и собственное управление памятью. Cloud SQL оптимизирован для InnoDB. Кроме того, в Cloud SQL в настоящее время выполняются медленные запросы, использующие файловую сортировку. Так что для лучшей производительности, пожалуйста, избегайте этого. - person Razvan Musaloiu-E.; 19.06.2014
comment
Любые предложения относительно того, как избежать сортировки файлов с помощью этого запроса или принудительно использовать другой метод. - person SimonSmethMac; 20.06.2014
comment
Удаляет ли удаление GROUP BY файловую сортировку? - person Razvan Musaloiu-E.; 21.06.2014
comment
Это так, добавление порядка по Null, похоже, отсортировало его. - person SimonSmethMac; 25.06.2014