Я пишу код, который извлекает данные из таблиц базы данных и записывает их в XML-файл (который будет выбран другим процессом). Есть около 60000 записей, и каждая запись может иметь несколько субъектов, то есть член может иметь несколько контактов, каждый контакт может иметь несколько телефонных номеров и т. Д. Весь процесс занимает несколько часов, и я сократил медлительность до фактического извлечение данных (не запись XML или обработка данных после их извлечения и т. д.). Я пробовал код двумя разными способами, с похожими результатами. Сначала я использовал запросы LINQ и создал все элементы в одном выражении:
Dim output =
From m In dc.members
Select New XElement("member", _
New XElement("id", m.member_id), _
New XElement("address", m.Address), _
New XElement("city", m.City), _
New XElement("state", m.State), _
New XElement("contacts", _
From c in m.contacts
Select New XElement("contact", _
New XElement("contact_name", c.name), _
New XElemdnt("contact_address", c.address), _
...
Я подумал, что это может быть создание всех XElements, которые замедляли его, поэтому я попытался записать элементы непосредственно в файл XML, используя циклы For:
Dim output As New Xml.XmlTextWriter("my.xml", Nothing)
For Each m in dc.members
output.WriteStartElement("member")
output.WriteElementString("id", m.member_id)
output.WriteElementString("address", m.Address)
output.WriteElementString("city", m.City)
output.WriteElementString("state", m.State)
output.WriteStartElement("contacts")
For Each c in m.contacts
output.WriteStartElement("contact")
output.WriteElementString("contract_name", m.name)
output.WriteElementString("contract_address", m.address)
....
Это почти не изменило количество времени, затраченного на процесс. Затем я попытался убрать все элементы и сократить код до просто извлечения базы данных, и это было так же медленно.
Есть ли более быстрый / лучший способ извлечь все эти нормализованные данные из базы данных, чтобы я мог как можно быстрее передать их в файл XML?