LEFT или DATE_FORMAT, что быстрее переформатирует дату в запросе SELECT в mysql?
Я покажу пример этой проблемы.
Информация таблицы PERSON
ЧЕЛОВЕК
Если выполнить запрос «ВЫБЕРИТЕ ГОД ОТ ЧЕЛОВЕКА», вы увидите результат ниже.
Но я хочу результат, как показано ниже.
Итак, я хотел использовать один из следующих запросов.
ВЫБЕРИТЕ СЛЕВА(ГОД,10) ОТ ЧЕЛОВЕКА
ВЫБЕРИТЕ DATE_FORMAT (ГОД, '%Y-%m-%d')
Однако мне интересно, какой запрос работает лучше.
Пожалуйста, помогите мне..
🤔 А знаете ли вы, что...
MySQL обеспечивает множество индексов для оптимизации поисковых запросов.
Технически LEFT()
работает почти в четыре раза быстрее, основываясь на этом тесте на моем Macbook M1. Ваш результат может отличаться.
mysql> select benchmark(100000000, left(year, 10)) from person;
+--------------------------------------+
| benchmark(100000000, left(year, 10)) |
+--------------------------------------+
| 0 |
+--------------------------------------+
1 row in set (1.75 sec)
mysql> select benchmark(100000000, date_format(year, '%Y-%m-%d')) from person;
+-----------------------------------------------------+
| benchmark(100000000, date_format(year, '%Y-%m-%d')) |
+-----------------------------------------------------+
| 0 |
+-----------------------------------------------------+
1 row in set (6.81 sec)
Но учитывая, что мне пришлось выполнить оба выражения 100 миллионов раз, чтобы увидеть существенную разницу, оба они настолько быстры, что я бы не стал об этом беспокоиться. Вполне вероятно, что другие части запроса окажут гораздо большее влияние на производительность.
Беспокоиться о том, какая из этих двух функций работает лучше, все равно что беспокоиться о том, что лучше использовать для подъема 100-килограммовой штанги одним или двумя пальцами.