Я перемещаю проект из EF6 в EF Core. После рефакторинга всего и генерации исходной базы данных я сделал SQL-разбор для нашей существующей базы данных и обнаружил несколько вещей:
Ограничения названы по-разному. Они раньше содержали схему таблицы, но больше не делают. Это делает сравнение немного утомительным, но ничего страшного.
Индексы теперь включают имена таблиц. Опять же, делает сравнение немного утомительным, но ничего страшного.
Ядро EF теперь создает альтернативные индексы для составных таблиц ключей, которых не было в EF6.
Если внешний ключ является частью составного ключа, EF Core не создает индекс для этого столбца, как EF6. Я предполагаю, что это потому, что он уже обработан через индекс PK и действительно не нужен. Это правда?
Если внешний ключ является частью уникального индекса, определенного через свободный API, ядро EF не создает дополнительный индекс для внешнего ключа в этом столбце. Мой вопрос: можно ли предположить, что индекс действительно не нужен, если столбец уже является частью уникального индекса?
Конечно, мы отслеживаем производительность и вручную создаем индексы по мере необходимости, но я просто хочу убедиться, что то, что ядро EF первоначально генерирует, обрабатывает соединения FK без потери производительности, когда решает не создавать индекс для столбца из-за # 4 и № 5.