Вверх ↑
Этот топик читают: Гость
Ответов: 704
Рейтинг: 7
#1: 2013-11-22 00:20:15 ЛС | профиль | цитата
Тормозит вывод в StringTable 15000 строк. Ну секунд 5 идет в отдельном потоке. Может это норма? Просто вывод этих же данных в StrList идет мгновенно. Данные выводятся из SQLite одним запросом.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#2: 2013-11-22 01:49:34 ЛС | профиль | цитата
Neo, вопрос можно ?
1. Нахрена тебе в StringTable 15000 строк ?
2. Зачем на них смотреть ?
------------ Дoбавленo в 01.49:
Даже если ты обладаешь феноменальными навыками быстрого чтения, то на просмотр одной страницы уйдет 2-3 секунды.
Страница на экране - это 40 строк. 15000:40=375 страниц х 3 секунды = 1125 секунд или ~19 минут
Если таких способностей нет, то умножь результат на 10 и получишь ~ > 3 часов.
Кому это надо ?
Пожалей свои глаза (и чужие тоже)
Выводить в StringTable нужно столько - сколько помещается на экране.
Для этого существуют волшебные слова LIMIT и OFFSET.
И тоже будет мгновенно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 704
Рейтинг: 7
#3: 2013-11-22 02:32:20 ЛС | профиль | цитата
Tad, ну удобно смотреть на все сразу. Прокрутил себе куда нужно... Но в общем, если выхода нет, то буду делать более конкретную выборку
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#4: 2013-11-22 03:19:47 ЛС | профиль | цитата
Neo писал(а):
Прокрутил себе куда нужно...

MST_Virtual

Там есть пара интересных примеров. Кстати, скролл тоже поддерживает.
карма: 22

1
Голосовали:Neo
Ответов: 16884
Рейтинг: 1239
#5: 2013-11-22 11:03:50 ЛС | профиль | цитата
Neo писал(а):
ну удобно смотреть на все сразу.
Да не удобно смотреть на всё сразу.
Neo писал(а):
Прокрутил себе куда нужно...
И крутить "куда нужно" тоже не надо.
Не переживай. Ты не один с таким подходом к работе с БД.
Нужно запросом получить сразу "что нужно".
При грамотном запросе - обычно это одна строка.
И StringTable не так уж и часто нужна на экране.
За примером далеко ходить не надо: HiAsm.
Панель "Элементы".
Представь, что сразу открыты все 700.
"Удобно смотреть на все сразу" ??? Или твоё "Прокрутил себе куда нужно" ?
Вряд ли.
Намного удобней:
Нужны Строки ? - На тебе строки.
Нужна Логика ? - На логику.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 8930
Рейтинг: 823
#6: 2013-11-22 11:24:58 ЛС | профиль | цитата
Tad, [flood]Нужна баба? - На тебе бабу! [/flood]
карма: 19

1
Голосовали:Tad
Ответов: 704
Рейтинг: 7
#7: 2013-11-22 13:35:45 ЛС | профиль | цитата
Примеры отличные. Конечно и идея с разбиванием по вкладкам хорошая, но онлайн подгрузка пока будет удобнее.
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#8: 2013-11-22 17:56:32 ЛС | профиль | цитата
Neo, я делаю так и на любом размере БД работает на раз.
code_32397.txt
------------ Дoбавленo в 17.56:
Никак руки не доходят превратить IC в компонент.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
файлы: 1code_32397.txt [5.5KB] [249]
Голосовали:Neo
Разработчик
Ответов: 26163
Рейтинг: 2127
#9: 2013-11-22 19:31:13 ЛС | профиль | цитата
Tad писал(а):
Никак руки не доходят превратить IC в компонент.

Вот я вот тоже подумываю забубенить компонент условия попадания в список диапазонов
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#10: 2013-11-22 21:04:31 ЛС | профиль | цитата
Такое ? Правда только на один диапазон.

#pas
procedure THIBetween._work_doCheck; // проверка чисел
var
Dt:TData;
L,R,D:TData;
BEGIN
D := ReadData(_Data,_data_Check,@_prop_Check);
L := ReadData(_Data,_data_Left,@_prop_Left);
R := ReadData(_Data,_data_Right,@_prop_Right);
if Compare(D,L,4) and Compare(D,R,3)then
_hi_CreateEvent(_Data,@_event_onTrue,D)
else
_hi_CreateEvent(_Data,@_event_onFalse,D);
END;
[flood]
nesco писал(а):
MST_Virtual
Там есть пара интересных примеров.
Посмотрел первый.
Пара вопросов:
Для того, что бы получить имена колонок - делаешь запрос Select * From ... т.е. перебираешь все (как писал Neo) 15 000 строк.
При этом 15 000 раз ищешь max(id) и 15 000 раз отнимаешь от этого max(id) единичку.
А если миллион записей ?
1. Почему не применить SELECT * FROM .... LIMIT 1; ?
За один раз получишь все удовольствия. Даже на elements 10-кратный выигрыш. Повторюсь - А если миллион записей ?
2. Привязка к max(id) не лучший вариант. А если Neo удалил с 5 по 14999 строку, т.е. в таблице осталось всего 5 строк, а max(id)=15000.
Про что расскажет max(id) ? Получишь сотню пустых страниц. Листай - не хочу.
А если id нет ?
Привязываться нужно к count(). ИМХО.
[/flood]
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#11: 2013-11-22 23:48:38 ЛС | профиль | цитата
Tad писал(а):
Пара вопросов

Tad, есть пример, есть твои уточнения (предыдущие твои уточнения я уже внес в эти примеры), нарисуй на основе этих примеров свои, с включением твоих правок и твоих рекомендаций.
------------ Дoбавленo в 23.48:
Tad писал(а):
Правда только на один диапазон

Я бы лучше имел три события -- меньше, равно, больше
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#12: 2013-11-23 11:59:12 ЛС | профиль | цитата
nesco,
1. как я могу что-то нарисовать, если я не могу понять: Почему, для отображения несчастных( ) 15-и строк, нужно 399 раз обращаться к верхней точке ?
nesco1.gif

2. компонент делался для себя. Называется Between (в переводе "между") какое нафик "меньше, равно, больше" ?
Скорее "ниже, в диапазоне, выше"
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1nesco1.gif [49.4KB] [267]
Разработчик
Ответов: 26163
Рейтинг: 2127
#13: 2013-11-23 12:10:22 ЛС | профиль | цитата
Tad писал(а):
нужно 399 раз обращаться к верхней точке ?

Столько просит система на перерисовку экрана
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#14: 2013-11-23 12:30:56 ЛС | профиль | цитата
Воевать с системой не будем.
Хотя у нас всегда виноватый если не Билл, то Кладов.
Твой компонент запрашивает 399 раз. Пусть он и расчитывается с системой.
Ладно.
Тогда наверное как-то так (изменённое отмечено жёлтым)
code_32403.txt
Нет. И так нельзя. Будет листать не до конца.

Хотя, "мне так кажется"(с), так не должно быть:
Представь, что где-то в середине таблицы удалено 150 записей подряд. И будешь ты листать 10 пустых страниц.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 2nesco2.gif [28.4KB] [267], code_32403.txt [6.1KB] [245]
Разработчик
Ответов: 26163
Рейтинг: 2127
#15: 2013-11-23 12:35:19 ЛС | профиль | цитата
Tad писал(а):
И будешь ты листать 10 пустых страниц

Для этого есть вторая схема, которая с буфером, она исключает пустые записи
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)