2009-11-15 4 views
2

Я хочу, чтобы иметь возможность быстро искать таблицу с помощью Entity Framework, скажем, если у меня есть таблица контактов, таблица JobToDo и таблица матриц, связывающая две таблицы, например Contacts_JobsToDo_Mtx и I укажите два внешних ключа в таблице Contacts_JobsToDo_Mtx, если я захочу выполнить поиск в этой таблице Mtx, мне нужно указать индекс для двух внешних ключей? Или из-за того, что они являются двумя внешними ключами, они все равно считаются проиндексированными на них? Может ли платформа Entity Framework быстро выполнить поиск по таблице Mtx, не указав указатель на оба ключа? Благодаря!Entity Framework использование индексов и внешних ключей

ответ

1

Зависит от базы данных, имеющейся у вас, но обычно (из моего опыта SQL Server), нет. Просто использование Entity Framework не волшебным образом ограничивает ваши ограничения SQL Server (или потенциалы для увеличения скорости!).

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

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

1

Entity Framework 1 не имеет ничего общего с созданием вашей схемы или добавлением внешних ключей к вашей «матрице», обычно называемой многими для многих таблиц. Entity Framwork 4.0 может создавать эти таблицы для вас и иметь необходимые ключи и индексы.

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

Entity Framework создает оптимизированные запросы для 99% общих сценариев CRUD. Если вы сходите с ума от операторов esql или linq, они могут быть не такими оптимизированными, но все равно должны выполняться просто отлично с доступом к малым и средним масштабированным запросам.

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

TL: DR;

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

Смежные вопросы