Скорость сортировки записей в dataview

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Вячеслав_К
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 02.02.2004 (Пн) 20:35
Откуда: Москва

Скорость сортировки записей в dataview

Сообщение Вячеслав_К » 26.02.2004 (Чт) 1:24

Проблема в том ,что есть dataset с таблицей из 40 000 записей (в ram места занимает 160MB) и сортировка этих записей через dataview занимает несколько минут. Вся таблица закачена с HDD в Ram.
Комп P4 2,4 Ghz 800 Mhz 512 Mb Ram.
И что теперь переписывать всё ни C?
Сортирую так:
dim dv as dataview
dv.Table = dt_mdb.Tables("st")
dv.RowStateFilter = DataViewRowState.CurrentRows
dv.Sort = "NAME"
Может есть что побыстрее?

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 26.02.2004 (Чт) 17:35

Ну, ты брат, размахнулся! :D 40,000 записей держать в памяти?! Это всё, конечно, зависит от конкретных потребностей, я бы посоветовал пересмотреть интерфейс. Неужели юзер будет редактировать (просматривать) все 40,000 записей сразу? Сделай ему небольшую выборку, и пусть сервер за тебя работает. Например, пусть юзер перед тем, как увидеть записи, хотя бы приблизительно укажет, что его интересует. Ему же лучше будет. :)
Изображение Вопросы - рёбрами!

Вячеслав_К
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 02.02.2004 (Пн) 20:35
Откуда: Москва

Сообщение Вячеслав_К » 26.02.2004 (Чт) 18:09

Попробовал. Все делается за долю секунды и выборка и сортировка.
Только каждый раз качает с диска. А записей не 40 000 а 456 000 - столько названий улиц в нашей стране... :D

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 27.02.2004 (Пт) 13:17

Не понял :?: Проблема решена?
Изображение Вопросы - рёбрами!

Грандж
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 150
Зарегистрирован: 29.10.2002 (Вт) 14:10
Откуда: Москва

Сообщение Грандж » 27.02.2004 (Пт) 14:09

типа
а классифицировать то как-нибудь можно? если сортируешь по имени, то создай таблицы с улицаит допустим только на одну букву.
допустим в разных городах есть улицы с одним и тем же именем.

какая информативная нагрузка у приложения?
и между ног затеплилась надежда
(%

http://grunger.net.ru

Вячеслав_К
Начинающий
Начинающий
 
Сообщения: 20
Зарегистрирован: 02.02.2004 (Пн) 20:35
Откуда: Москва

Сообщение Вячеслав_К » 27.02.2004 (Пт) 19:46

В смысле какая информативная нагрузка?
Всё решено. Все работает.

Dim dt_zbase As New DataSet()
Dim str As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & _
Directory.GetCurrentDirectory & "\Main\zbase.mdb"
Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection(str)
cn.Open()
Dim strselect As String
strselect = "SELECT * From st WHERE IDN=" & Me.ComboBox_N_p.SelectedValue & " ORDER BY st.NAME;"
Dim dscmd As New OleDb.OleDbDataAdapter(strselect, cn)
dscmd.Fill(dt_zbase, "st")
cn.Close()
Me.ComboBox_Ulica.DataSource = dt_zbase.Tables("st")
Me.ComboBox_Ulica.DisplayMember = "NAME"
Me.ComboBox_Ulica.ValueMember = "IDS"

И фильтрация и сортировка всё за доли секунды, без задержек :D

Теперь друга проблема.
Нужен combobox с двумя полями, в первом ул., пер, бульв., а другой само название.
Может знаете?


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 79

    TopList