Вопрос по быстродействию

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Лексей
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 121
Зарегистрирован: 03.08.2004 (Вт) 6:50
Откуда: Екатеринбург

Вопрос по быстродействию

Сообщение Лексей » 17.12.2004 (Пт) 18:08

Столкнудся с проблемой такого рода:
список ListView при открытии формы заполняется строками рекордсета ADO (строк получается этак 20000).
табдицы mdb файла, из которых формируется список (запрос

"SELECT DISTINCTROW tblDoc.DCode, tblDoc.DName, tblDoc.ISID, tblDoc.DChoose, tblDoc.DPage FROM tblDoc INNER JOIN tblRefer ON tblDoc.DCode=tblRefer.DCode;")
содержит одна около 30000 а другая около 70000 записей, соответственно открытие формы даже на 4 пеньке с 500 пямятью занимает около 1 минуты (или даже больше).

Может есть какие соображения на счет повышения быстродействия (может запрос как переиначить или список формировать по другому, но на сколько я понимаю, дело в формировании рекордсета).
Возможно лт как то организовать список так, чтоб формировалось сначала строк эдак 50 а остальнок по мере прокрутки списка - будет толк то?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.12.2004 (Пт) 18:16

сделай индексы по полям DCode, в главной таблице , как я понимаю, это будет Primary Key

вообще, такие запросы на сиквеле отрабатывают за доли секунды

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.12.2004 (Пт) 18:17

Гы...
Эффективность таких контролов резко падает с увеличением количества данных... У листбокса вообще есть режим отдельный для таких случаев, как же его...

В общем, есть мысль перейти-таки на грид. Не? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.12.2004 (Пт) 18:21

сорри, не заметил, что ты грузишь 20000??? строк в listview

наверное стоит ограничить вывод на уровне запроса к базе или юзать нормальный грид, как тебе уже предложил GSerg

Лексей
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 121
Зарегистрирован: 03.08.2004 (Вт) 6:50
Откуда: Екатеринбург

Сообщение Лексей » 17.12.2004 (Пт) 18:46

Необходимые поля таблицы уже проиндексированы.
А на счет контрола - необходимо чтоб в списке были чеки, для отметки необходимых строк, и еще иконки для отображения некоторого состояния зависимости строк (кстати с иконками пофиг, я умудрился в аце в обычний листбокс запихнуть картинки создав свой шрифт, где для определенных символов - кодов состоягия были свои смысловые символы - извратился наверное - зато все просто и работает быстро).

А если как то в Listview динамически подгружать частями строки?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.12.2004 (Сб) 8:53

Лексей, зацени TrueDB Grid, QuantumXpressGrid, Janus Grid.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

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

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

    TopList