Datatable.com медленно работает с похожим состоянием - PullRequest
1 голос
/ 12 января 2010

У меня проблема с моей программой asp.net. Я делаю Datatable.Compute для очень большой базы данных с условием like. Результат занимает около 4 минут или показывает тайм-аут запроса. Если я выполняю тот же запрос с символом «=» и текстом исправления, это займет около 1 минуты, чтобы показать, что для меня приемлемо.

Вот такая медленная строка:

float test = (int)Datatbl.Tables["test"].Compute("COUNT(pn)", "pn like '9800%' and mois=" + i + " and annee=" + j);

Я искал решение 2 дня.

Пожалуйста, помогите мне.

Ответы [ 2 ]

1 голос
/ 12 января 2010

Я нашел это.

Я использую Dataview и отправляю результат в DataTable. Это ускорило процесс в 10 раз

Вот пример:

DataView dv = new DataView(Datatbl.Tables["test"], filter, "pn", DataViewRowState.CurrentRows);
DataTable test = dv.ToTable();

и затем вы можете использовать «тест» DataTable.

1 голос
/ 12 января 2010

Вы извлекаете данные в вашем Datatable из базы данных? У вас есть доступ к базе данных?

Если это так, одним из вариантов является исследование методов перемещения этого поиска и агрегирования в базу данных вместо того, чтобы делать это в вашем коде C #. Как только он появится в базе данных, при необходимости вы можете добавить индексы для столбцов 'mois' и 'annee', которые могут значительно ускорить поиск. Если '9800' является жестко заданным значением, вы можете даже добавить денормализацию, состоящую из логического столбца, указывающего, начинается ли столбец 'pn' с '9800, и поместить индекс в этот столбец. Это может сделать поиск действительно очень быстрым.

Доступно много вариантов.

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