Mysql заказывают объекты новейшей из 2 дат

У меня есть таблица с 2 датами - ADDDATE и UPDATEDATE.
Когда объект добавляется, ADDDATE является текущей датой, и UPDATEDATE 0000-00-00.

Я должен ORDER BY команда SQL и получает лучшую дату тех 2.
Например, если ADD=12/1/2010 и UPDATE=30/6/2010, ДАТА ОБНОВЛЕНИЯ является лучше всего (новейшей).

Совет?

12
задан Vadim Kotov 2 August 2017 в 14:55
поделиться

3 ответа

Используйте GREATEST для поиска самой новой даты:

ORDER BY GREATEST(UPDATEDATE, ADDDATE)
24
ответ дан 2 December 2019 в 03:25
поделиться
 ORDER BY IF(UPDATEDATE > ADDDATE, UPDATEDATE, ADDDATE)
12
ответ дан 2 December 2019 в 03:25
поделиться

Если вы хотите сделать свою базу данных масштабируемой, лучшим подходом будет добавление нового столбца LATESTDATE вместе с триггером вставки / обновления, который устанавливает для него самое последнее из двух полей-кандидатов, используя для например, наибольшее .

Выполнение построчных функций для выбранных вами элементов очень быстро замедляется по мере увеличения размера таблицы. Если вы хотите, чтобы производительность оставалась работоспособной по мере роста таблицы, этот трюк является обычным.

Технически это нарушает 3NF, поскольку дублирует одну из дат, но нарушение допустимо по соображениям производительности, и вы по-прежнему поддерживаете свойства ACID, потому что триггеры требуют, чтобы столбцы оставались согласованными.

Я не знаю синтаксис триггеров MySQL, но я бы сделал что-то вроде:

  • Создайте новый столбец, установив для него подходящее значение по умолчанию.
  • Создайте триггеры вставки / обновления, чтобы гарантировать, что изменения будут отражены.
  • Коснитесь всех строк запросом вроде update TBL set ADDDATE = ADDDATE , чтобы триггер сработал для всех текущих строк.

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

Имейте в виду, что в этом может не быть необходимости, если размер вашей таблицы относительно невелик - я работаю в среде, где таблицы действительно огромны.

8
ответ дан 2 December 2019 в 03:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: