Круговые зависимости

Это ваш запрос:

select distinct first_name 
from user 
where id = '1';

Вы замечаете, что user(first_name, id) быстрее, чем user(id, firstname).

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

Во-вторых, если вы выполняете запросы только один раз, то при первом запуске запроса у вас может быть «холодный кэш». Во второй раз данные уже хранятся в памяти, поэтому они работают быстрее.

Могут возникнуть и другие проблемы. Вы не указываете, что такое время. Небольшие различия могут быть вызваны шумом и могут быть бессмысленными.

Вы не предоставили достаточно информации, чтобы дать более четкое объяснение. Это будет включать:

  • Повторные тайминги работают на холодных кешах.
  • Информация о размере таблицы и количестве совпадающих строк.
  • Информация о компоновке, особенно тип id.
  • Объясните планы по двум запросам.
29
задан Dave Schweisguth 18 February 2016 в 14:25
поделиться

10 ответов

Абсолютно нет. Крунтовые зависимости являются признаком плохого дизайна. Я не хочу быть суровым. Есть некоторые пути из этого.

1) Вы можете реформировать общий код в другой проект, скажем, проект № 0

2) Вы можете исправить ваш дизайн, который, вероятно, способ пойти.

Дядя Боб имеет хорошую статью о принципах упаковки, которые включают в себя принцип ациклических зависимостей. http://www.objectmentmentor.com/resources/articles/granularyity.pdf . Прочитайте это, чтобы знать, почему циклические зависимости являются плохой вещью.

66
ответ дан 28 November 2019 в 00:42
поделиться

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

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

0
ответ дан 28 November 2019 в 00:42
поделиться

Рефакторизуйте свои проекты, чтобы вывести общие элементы в "Project #0", на который ссылаются и Project #1, и Project #2.

12
ответ дан 28 November 2019 в 00:42
поделиться

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

6
ответ дан 28 November 2019 в 00:42
поделиться

Как регулярные выражения C ++, по-видимому, основаны на регулярных выражениях Ecmascript, отвечают ответа на недавний вопрос примерно в JavaScript, может помочь вам.

[11] должно работать, но если вы хотите что-то немного более четкое и менее взлома, вы можете попробовать (. | \ N) .

-121--2675120-

Украсьте его [сериализуемым] или [DataContratt] . Существуют некоторые различия между двумя атрибутами, убедитесь, что вы проверяете это ( этот блог может помочь с этим). И отметьте отдельных элементов Enum с [914902] [eneMember] . Я никогда не проверял, как выглядит Enum в пути, но делает это, гарантируют, что он прибудет на другой конец, и также убедитесь, что он получен, если вы генерируете доверенности клиента.

-121--4349643-

Круговая зависимость означает, что они больше не являются двумя независимыми проектами (потому что там невозможно построить только один из них).

Вам необходимо либо рефакторист, чтобы у вас есть только одностороннее зависимость, или вы должны объединить их в единый проект.

3
ответ дан 28 November 2019 в 00:42
поделиться

Я действительно не хочу быть умным, но лучший дизайн программы - это ответ.

2
ответ дан 28 November 2019 в 00:42
поделиться

объединяет два в один или редизайн.

6
ответ дан 28 November 2019 в 00:42
поделиться

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

3
ответ дан 28 November 2019 в 00:42
поделиться

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

4
ответ дан 28 November 2019 в 00:42
поделиться

Это кажется недостатком дизайна, ничего больше. Перезапись - это решение.

1
ответ дан 28 November 2019 в 00:42
поделиться
Другие вопросы по тегам:

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