Entity Framework использование индексов и внешних ключей - PullRequest
2 голосов
/ 15 ноября 2009

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

Ответы [ 2 ]

1 голос
/ 15 ноября 2009

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

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

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

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

TL: DR;

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

1 голос
/ 15 ноября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...