Использование CONVERT_TZ вызывает проблемы Perfomance? - PullRequest
0 голосов
/ 11 октября 2018

Мы планируем, изменить ли часовой пояс всей базы данных или использовать CONVERT_TZ во всех наших функциях и событиях.

Есть ли какие-либо проблемы с производительностью, если мы решим использовать CONVERT_TZ, имея в виду, что это может быть преобразованиеи сравнивать миллионы строк и событий каждую минуту?

1 Ответ

0 голосов
/ 11 октября 2018

Это действительно зависит , где вы планируете использовать функцию CONVERT_TZ.

Например, если она обернута вокруг столбца в предложении WHERE, это отключит возможность MySQLиспользовать операцию сканирования диапазона индекса.И это может иметь существенное влияние на производительность или вызвать «проблемы с производительностью».

Например, если этот запрос использует сканирование диапазона индекса для индекса с mydatetime в качестве ведущего столбца, выбирая лишь несколькоиглы из большого стога сена:

 SELECT t.foo
   FROM my_huge_table t
  WHERE t.mydatetime >= '2018-10-09 14:30'
    AND t.mydatetime <  '2018-10-09 15:15'

Добавление функции CONVERT_TZ вокруг литералов не вызовет проблем с производительностью.Производительность будет такой же:

 SELECT t.foo
   FROM my_huge_table t
  WHERE t.mydatetime >= CONVERT_TZ('2018-10-09 08:30','EST5EDT','UTC')
    AND t.mydatetime <  CONVERT_TZ('2018-10-09 09:15','EST5EDT','UTC')

Но если мы обернем столбцы в предложении WHERE в функции, это заставит MySQL оценить функцию, а затем выполнить сравнение, и это будет сделанодля каждой строки в таблице.

Do NOT сделать это:

 SELECT t.foo
   FROM my_huge_table t
  WHERE CONVERT_TZ(t.mydatetime,'UTC','EST5EDT') >= '2018-10-09 08:30'
    AND CONVERT_TZ(t.mydatetime,'UTC','EST5EDT') <  '2018-10-09 09:15'

Покапоскольку SQL по-прежнему ссылается на голые столбцы в предикатах (условия в выражении WHERE и ON), добавление функций CONVERT_TZ в другие места в SQL не должно оказывать существенного влияния на производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...