Как я могу увеличить время загрузки базы данных? - PullRequest
0 голосов
/ 02 ноября 2018

Я работаю над миграцией базы данных в приложении Windows. Ранее это была база данных доступа (file.accdb), и я переносил ее в базу данных Sql Azure. У меня проблема со временем загрузки при запуске приложения. Время загрузки увеличилось с ~ 5 секунд до более чем 600 секунд. Я обнаружил проблему, и именно этот метод ...

 private void LoadPSDTestPSDResult()
    {
        String sqlQuery = "SELECT * FROM PSDTestPSDResultEuro";
        string sqlQuery2 = "SELECT * from PSDTestPSDResultEuroExtended WHERE SampleID = @sampleId AND PartAn = @partAn";

        using (DataTable results = LoadTable(sqlQuery))
        {
            foreach (DataRow row in results.Rows)
            {
                PSDTestPSDResultEuro newData = new PSDTestPSDResultEuro
                {
                    SampleID = (Int32)row["SampleID"]
                };

                if (row["PartAn"] != DBNull.Value)
                    newData.PartAn = (bool)row["PartAn"];
                if (row["0"] != DBNull.Value)
                    newData.Sep_0 = (Double)row["0"];
                if (row["0,036"] != DBNull.Value)
                    newData.Sep_0_036 = (Double)row["0,036"];
                if (row["0,05"] != DBNull.Value)
                    newData.Sep_0_05 = (Double)row["0,05"];
                if (row["0,063"] != DBNull.Value)
                    newData.Sep_0_063 = (Double)row["0,063"];
                if (row["0,074"] != DBNull.Value)
                    newData.Sep_0_074 = (Double)row["0,074"];
                if (row["0,125"] != DBNull.Value)
                    newData.Sep_0_125 = (Double)row["0,125"];
                if (row["0,25"] != DBNull.Value)
                    newData.Sep_0_25 = (Double)row["0,25"];
                if (row["0,5"] != DBNull.Value)
                    newData.Sep_0_5 = (Double)row["0,5"];
                if (row["1"] != DBNull.Value)
                    newData.Sep_1 = (Double)row["1"];
                if (row["2"] != DBNull.Value)
                    newData.Sep_2 = (Double)row["2"];
                if (row["3,15"] != DBNull.Value)
                    newData.Sep_3_15 = (Double)row["3,15"];
                if (row["4"] != DBNull.Value)
                    newData.Sep_4 = (Double)row["4"];
                if (row["5"] != DBNull.Value)
                    newData.Sep_5 = (Double)row["5"];
                if (row["5,6"] != DBNull.Value)
                    newData.Sep_5_6 = (Double)row["5,6"];
                if (row["6,3"] != DBNull.Value)
                    newData.Sep_6_3 = (Double)row["6,3"];
                if (row["7,1"] != DBNull.Value)
                    newData.Sep_7_1 = (Double)row["7,1"];
                if (row["8"] != DBNull.Value)
                    newData.Sep_8 = (Double)row["8"];
                if (row["9"] != DBNull.Value)
                    newData.Sep_9 = (Double)row["9"];
                if (row["10"] != DBNull.Value)
                    newData.Sep_10 = (Double)row["10"];
                if (row["11,2"] != DBNull.Value)
                    newData.Sep_11_2 = (Double)row["11,2"];
                if (row["12,5"] != DBNull.Value)
                    newData.Sep_12_5 = (Double)row["12,5"];
                if (row["14"] != DBNull.Value)
                    newData.Sep_14 = (Double)row["14"];
                if (row["16"] != DBNull.Value)
                    newData.Sep_16 = (Double)row["16"];
                if (row["18"] != DBNull.Value)
                    newData.Sep_18 = (Double)row["18"];
                if (row["20"] != DBNull.Value)
                    newData.Sep_20 = (Double)row["20"];
                if (row["22,4"] != DBNull.Value)
                    newData.Sep_22_4 = (Double)row["22,4"];
                if (row["25"] != DBNull.Value)
                    newData.Sep_25 = (Double)row["25"];
                if (row["28"] != DBNull.Value)
                    newData.Sep_28 = (Double)row["28"];
                if (row["31,5"] != DBNull.Value)
                    newData.Sep_31_5 = (Double)row["31,5"];
                if (row["35,5"] != DBNull.Value)
                    newData.Sep_35_5 = (Double)row["35,5"];
                if (row["40"] != DBNull.Value)
                    newData.Sep_40 = (Double)row["40"];
                if (row["45"] != DBNull.Value)
                    newData.Sep_45 = (Double)row["45"];
                if (row["50"] != DBNull.Value)
                    newData.Sep_50 = (Double)row["50"];
                if (row["56"] != DBNull.Value)
                    newData.Sep_56 = (Double)row["56"];
                if (row["63"] != DBNull.Value)
                    newData.Sep_63 = (Double)row["63"];
                if (row["71"] != DBNull.Value)
                    newData.Sep_71 = (Double)row["71"];
                if (row["80"] != DBNull.Value)
                    newData.Sep_80 = (Double)row["80"];

                using (SqlCommand command = new SqlCommand(sqlQuery2, conn, trans))
                {   
                    command.Parameters.AddWithValue("@sampleId", newData.SampleID);
                    command.Parameters.AddWithValue("@partAn", newData.PartAn);
                    using (DataTable extendedRow = new DataTable())
                    {
                        extendedRow.Load(command.ExecuteReader());
                        if (extendedRow.Rows.Count > 0)
                        {
                            DataRow row2 = extendedRow.Rows[0];
                            if (row2["90"] != DBNull.Value)
                                newData.Sep_90 = (Double)row2["90"];
                            if (row2["100"] != DBNull.Value)
                                newData.Sep_100 = (Double)row2["100"];
                            if (row2["112,5"] != DBNull.Value)
                                newData.Sep_112_5 = (Double)row2["112,5"];
                            if (row2["125"] != DBNull.Value)
                                newData.Sep_125 = (Double)row2["125"];
                            if (row2["150"] != DBNull.Value)
                                newData.Sep_150 = (Double)row2["150"];
                            if (row2["200"] != DBNull.Value)
                                newData.Sep_200 = (Double)row2["200"];
                            if (row2["250"] != DBNull.Value)
                                newData.Sep_250 = (Double)row2["250"];
                            if (row2["300"] != DBNull.Value)
                                newData.Sep_Over250 = (double)row2["300"];
                        }
                    }

                }
                m_Database.PSDTestPSDResultEuro.Add(newData);
            }
        }
    }

Я пробовал несколько разных решений, делающих LoadPSDTestPSDResult параллельным и async-await. Это не решило проблему. Это даже не запустит программу как "тайм-аут выполнения" из-за памяти?

Мне сказали, что я могу попытаться установить индексы, чтобы увидеть, что не происходит неправильный цикл?

Я мог бы также задать запрос через базу данных вместо логики (кода)? Есть ли какие-нибудь советы по «увеличению» времени загрузки, о которых я могу прочитать, или как мне лучше всего подойти к этой проблеме?

Я с удовольствием отредактирую вопрос, чтобы сделать его более понятным

Это первая миграция, которую я делаю. Я только что закончила школу, и это моя первая работа!

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