Я уже видел несколько вопросов по этой теме, но мне нужно немного узнать о различиях в производительности между этими двумя методами.
Например, допустим, я записываю журнал событий, которые поступят в систему со словарным набором пар ключ / значение для конкретного события. Я запишу запись в таблице событий с базовыми данными, но затем мне нужен способ также связать дополнительные данные ключ / значение. Я никогда не узнаю, какие типы ключей или значений появятся, поэтому о какой-либо предопределенной таблице enum не может быть и речи.
Данные этого события будут постоянно передаваться, поэтому время вставки так же важно, как и время запроса.
Когда я запрашиваю определенные события, я буду использовать некоторые поля в событии, а также данные из ключа / значения. Для XML-способа я бы просто использовал оператор Attributes.exists ('xpath') как часть предложения where для фильтрации записей.
Нормализованным способом было бы использование таблицы с полями Key и Value с внешней ссылкой на запись Event. Это кажется простым и понятным, но я беспокоюсь о количестве задействованных данных.