nesco, я бы советовал делать задание нескольких параметров через одну точку путем использования МТ-технологии, потому что после возможного перехода на новую кодогенерацию использования аналога МТ будет наиболее эффективным способом передачи многих параметров в метод.
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
карма: 27 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad, таблица не занимается никакой сортировкой. Что ты ей дашь, то и получишь.
Tad писал(а): Именно, грузиш то, что нужно видеть и чаще всего это всего одна запись из определенной таблицы БД при том только нужная(ые) колонка(и)Вот это ты загнул. А если после сортировки получается 1000 записей и что, мне их всех в таблицу грузить? [size=-2]------ Добавлено в 14:12 Dilma, понял, я так и сделаю. Специальные MT методы. Но старые оставлю для совместимости со старыми проектами. Когда я начинал делать эту таблицу MT технология была еще только в проекте. |
|||
карма: 22 |
|
Ответов: 3655
Рейтинг: 69
|
|||
nesco писал(а):
Вот это ты загнул. А если после сортировки получается 1000 записей и что, мне их всех в таблицу грузить? А причём здесь сортировка . В БД хранятся все записи ,а в таблицу выводятся только необходимые в данный момент. А это обычно несколько строк и ни как не 1000. При правильном запросе. |
|||
карма: 0 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Вячеслав писал(а): В БД хранятся все записи ,а в таблицу выводятся только необходимые в данный моментЗапрос в студию про динамический вывод N-го количества строк с I-го индекса отсортированных данных. Я проверял на своей базе из 50000 записей сотрировку по определенному параметру. Минимально получалось около 500. Все 500 пришлось загонять в таблицу. А иначе как? А иначе только с запросом выше и при реакции таблицы на любой экранный чих c выдачей параметров I и N. Ребята, вы чего-то не догоняете. Складывается впечетление, что у вас базы больше 100 записей и нет. 100 записей для таблицы -- фигня, а вот 1000 это -- серьезно (тройка секунд, точно есть). А зачем выводить 1000 или 100, когда можно вывести 20 в динамике (столько сколько видно на экране + немного на поддержку скролинга, и столько же хранить в таблице -- а больше нахрена, остальное -- в базе). Это у вас таких задач не возникало, а вот у меня возникли. |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): Вот это ты загнул. А если после сортировки получается 1000 записей и что, мне их всех в таблицу грузить?Вячеслав писал(а): При правильном запросе.Да, если SELECT fam, name, otch FROM Москва WHERE fam='Иванов' ORDER BY name то может быть и больше 10 000, но если нужно узнать сколько Ивановых в Москве, то запрос совершенно другой. Запрос он на то и запрос, чтобы не искать в StringTable глазами , а сразу получить готовый ответ |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Ну тогда, согласно ваших измышлений, Кладов -- дурак (в чем я оооочень сильно сомневаюсь), если пишит вот такие вещи
Кладов писал(а): (виртуальные списки тем и отличаются от обычных, что текст и изображения программа хранит у себя, и в результате появляется возможность быстро работать с огромными списками данных); |
|||
карма: 22 |
|
Ответов: 3655
Рейтинг: 69
|
|||
Я вообще считаю что таблиц с 10000 ми записей недолжно быть.
То есть должно быть несколько таблиц разделённых по тематике. [size=-2]------ Добавлено в 15:55 nesco писал(а): если пишит вот такие вещиА при чём тут виртуальные списки и вывод необходимых данных в таблицу. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, только что подключился к одной базе. Не SQLite, но формат запросов почти такой-же.
Время точно оценить не могу,т.к. подключался через Inet. На запрос: SELECT count(*) FROM <имя базы> ответ: записей - 9 миллионов с копейками. Сам удивился. Запрос на поиск моей фамилии, выдал 53 строки - 1м 40 сек Запрос на поиск с Where фам=<моя фамилия> and город=<мой город> выдал 4 строки - 2м 30 сек Запрос на поиск с Where город=<мой город> and фам=<моя фамилия> выдал те-же 4 строки но за 40 сек [size=-2]------ Добавлено в 16:45 SELECT fam AS Фамилия,name AS Имя, oth AS Отчество FROM <tabl> ORDER BY Фамилия именно и создаст виртуальный список |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad, это работа запросов, а не таблицы. В таблицу вывелось, максимум, 53 строки.
Вячеслав, например ты не знаешь спицифику моей базы. Пока это список (но хочу сделать базой), состоящий из 30000-50000 записей в сутки определенных процессов. Процессы никак нельзя разделить по тематике -- это должен быть непрерывный список, независящий от предварительно установленных параметров (тип,номер, время, событие -- все это может извне меняться независимо от меня). Tad обращался к подобной базе. Ну так вот номеров может быть больше тыячи, типов около шести (но может и вырасти). Если отсев производить по номеру, то получится около 50 записей, если по типу, то -- от 1000 до 5000, если по событию, то от 10 -- 2000. И что, мне всю это полученную лабуду в таблицу пихать? Загрузка 5000 строк в таблицу занимает около 5-10 сек (неважно откуда). [size=-2]------ Добавлено в 16:51 Tad писал(а): именно и создаст виртуальный списокно список базы, а не таблицы, а в таблицу будет выведен весь "ORDER BY". Для таблицы это -- внешний виртуальный список. |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): если по типу, то -- от 1000 до 5000 |
|||
карма: 25 |
|
Ответов: 3655
Рейтинг: 69
|
|||
nesco писал(а): это должен быть непрерывный списокТак пускай он и будет в Базе. А в таблицу зачем его весь выводить. Tad писал(а): Не понимаю - зачем на них смотреть?Согласен. |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
select имя1, имя2 from <table> Limit 20 offset %1 может тебе нужно такой запрос
В переводе: Выбрать все записи из таблицы БД и выводить в StringTable имя1, имя2 по 20 записей (Limit 20 ) начиная с записи (offset %1) где %1 можеш задавать кнопками Вперед, Назад. И листай себе наздоровье. Ну никак я не пойму - чего хочешь. Ты скажи, ты скажи Чё те надо, чё надо ? [size=-2]------ Добавлено в 17:54 Вот тебе стандартный скелет запроса SELECT [ALL | DISTINCT] result [FROM table-list]
[WHERE expr] [GROUP BY expr-list] [HAVING expr] [compound-op select]* [ORDER BY sort-expr-list] [LIMIT integer [(OFFSET|,) integer]] |
|||
карма: 25 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Tad писал(а): Вперед, НазадВо-во. Только вместо этих кнопок скролинг таблицы. А вот теперь подробнее, что может выдавать таблица 1. Число 20 -- количество видимых строк + немного для скролинга. Дальше, извне формируем строку Limit 20 2. %1 -- Внутренний счетчик позиции и выводитmся на экран будет начина c TopRow (самая верхняя строка), на основании чего будем формировать извне строку offset %1 |
|||
карма: 22 |
|
Ответов: 3655
Рейтинг: 69
|
|||
nesco,
Выложил бы для примера 10000 записей и сказал что тебе надо с ними сделать . |
|||
карма: 0 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
Вячеслав, Да причем тут 10000 записей? Я хотел предложить динамическую отрисовку таблицы, в которо не хранится 10000 записей, а просто при отрисовке выдает данные для запроса к базе и, затем, считывает полученные данные из базы, кторые и отображает на экране. Внутренний список таблицы используется как экранный кэш, вот и все, что я предлагал.
|
|||
карма: 22 |
|