Ускорение кода, который копирует структуру базы данных в XML - PullRequest
1 голос
/ 23 августа 2010

У меня есть структура базы данных, заполненная данными, которые я пытаюсь записать в файл XML.Вот пример того, как структурирован код VB:

Dim xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance")

Return _
    New XElement( _
        "providers", _
        New XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), _
        New XAttribute(xsi + "noNamespaceSchemaLocation", "\schema\provider_schema.xsd"), _
        From p In context.providers _
        Select New XElement( _
            "provider", _
            New XElement("external_provider_id", p.external_provider_id), _
            New XElement( _
                "demographic", _
                New XElement("record_type_id", p.demographics.Single.record_type_id), _
                New XElement("provider_number", p.demographics.Single.provider_number), _
                ...
                New XElement("provider_type_id", p.demographics.Single.provider_type_id)), _
            New XElement( _
                "provider_specialties", _
                From s In p.provider_specialties _
                Select New XElement( _
                    "provider_specialty", _
                    New XElement("external_provider_specialty_id", s.external_provider_specialty_id), _
                    New XElement("record_type_id", s.record_type_id), _
                    New XElement("effective_date", s.effective_date.TruCareFormat), _
                    ...

Структура извлекает данные из примерно 15 различных таблиц, все они связаны с таблицей поставщиков, некоторые из которых могут опускаться на 2 или 3 уровня.,В настоящее время существует около 40 000 провайдеров, и выполнение кода занимает около 1,5 часов.

У меня есть две проблемы с этим кодом в его текущем состоянии:

  1. Я не вижуили сообщать о любом прогрессе, потому что вся обработка связана с одним гигантским запросом LINQ.Даже если я не смогу сделать это быстрее, я бы хотел знать, сколько мне еще ждать.Моя первая версия этого кода содержала циклы For вместо запросов, поэтому я мог отображать прогресс, но это занимало больше времени.
  2. Очевидно, я бы хотел значительно ускорить это.Похоже, что должен быть более простой способ преобразования данных в файл XML, тем более что структура базы данных была изначально создана из XSD.

Любые идеи о том, что я могу сделать, чтобыулучшить это?

1 Ответ

1 голос
/ 23 августа 2010

Я бы попытался написать запрос (или, может быть, больше запросов), который дает вам все данные и использовать эти данные для создания XML-документа.Теперь ваш SQL-запрос привязан к структуре вашего XML-документа, но может быть более эффективный запрос, который возвращает те же данные, но намного быстрее.

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