Рейтинг:1

Должен ли я использовать «Агрегацию» или «Настройки запроса» > «Отдельные», чтобы удалить повторяющиеся результаты?

флаг in

У меня есть базовое представление, которое отображает тизеры опубликованных статей. Представление имеет контекстный фильтр в поле тегов типа контента статьи, например. поля_теги. Контекстный фильтр настроен на прием нескольких идентификаторов, например. 1+2+3 для ИЛИ.

Когда я прохожу 1+2+3 для значения контекстного фильтра, если статья имеет более одного из переданных значений в field_tags, статья появляется в результатах несколько раз.

Я могу легко удалить повторяющиеся результаты, проверив Дополнительно > Настройки запроса > Отличительные флажок. Однако с этим флажком есть предупреждение о том, что это может замедлить выполнение запроса:

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

Кроме того, я могу удалить повторяющиеся результаты, включив Дополнительно > Использовать агрегацию. У этой опции нет предупреждения о производительности, но я предполагаю, что она также должна замедлить мой запрос.

Оба метода эффективны для удаления повторяющихся результатов с моей точки зрения. С этим простым представлением я не ожидаю проблем с производительностью, но:

какая разница между Дополнительно > Использовать агрегацию против Дополнительно > Настройки запроса > Отличительные удалить дубликаты? Что более производительно?

флаг cn
Это обычный вопрос SQL, а не вопрос Drupal, это просто вопрос `SELECT DISTINCT` и `GROUP BY`. См. https://stackoverflow.com/questions/581521/whats-faster-select-distinct-or-group-by-in-mysql для получения дополнительной информации.
sonfd avatar
флаг in
@ Клайв Понятно, спасибо.Я думаю, было бы полезно зарегистрировать здесь разницу между двумя вариантами. Что касается производительности, то, безусловно, лучше ответить на другом сайте. Если вы хотите опубликовать свой комментарий в качестве ответа, я приму его. Еще раз спасибо.
Jaypan avatar
флаг de
Этот парень предпочитает агрегацию: https://sqlperformance.com/2017/01/t-sql-queries/surprises-assumptions-group-by-distinct

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.