powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Посоветуйте как сделать...
23 сообщений из 23, страница 1 из 1
Посоветуйте как сделать...
    #32302754
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...На словах. Общую концепцию. Первое, второе, следующее. Если не в лом то с указанием соответствующих свойств необходимых компонентов или кусок кода.
Есть база(SQL). ADOConnection, ADOQuery, DataSource, DBGrid.
Как сделать чтобы таблица с большим количеством записей загружалась быстро.
А то при таком вот стандартном раскладе 500 тыс. - 1,5 мин. в локальной сети. Программа на этапе разработки, и есть большое желание устранить этот бардак. Но в литературе ничего внятного пока не нашел.

Между тем у MS все записи при открытии таблицы в EM грузятся довольно быстро. Понятно что там грузятся какие то порции. Но хотелось бы иметь такое же у себя.

Спасибо.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32302912
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем тебе сразу аж 500 000 записей? Ты не с фокспро случайно перешел?

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32302965
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть вычисляемые поля или сумма например считается, то гдето такая скорость и будет. Хотя все равно тормозно, запрос покажи...

Viman
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32302967
Adony
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Viman

Так тож не на клиенте считать надо...
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32302984
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто говорил про клиента?

Viman
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32303079
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю лентяйку под определенные задачи для работы с объектами сервера. Т.к. заказчики начинающие люди которым поставляется система на основе SQL Server и главное женщины в районе среднего возраста. Понятно что несколько других программ разрабатываемых в рамках одного заказа имеют конкретную направленность и оперируют в основном тремя (или чуть более)параметрами объекта. Отсюда и запросы пишутся боле менее конкретные но не универсальные.
Опуская детали, таблицы загружаются полностью. Как в ЕМ. По запросу "SELECT * " в ADOQuery. Затем идет поиск, сортировка, правка записей. Но в EM это быстро, видимо идет порция загрузки, и затем подкачка при прокрутке.
Вычисляемых полей нет. Когда загружается форма как в EM в ней нарисованы некоторые условия для работы с записями для юзера не знакомого с T-SQL.
Потому набор записей надо весь. Или как то обрабатывать. Технически.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32303202
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор писал:Опуская детали, таблицы загружаются полностью. Как в ЕМ. По запросу "SELECT * " в ADOQuery. Затем идет поиск, сортировка, правка записей. Но в EM это быстро, видимо идет порция загрузки, и затем подкачка при прокрутке.
Вычисляемых полей нет. Когда загружается форма как в EM в ней нарисованы некоторые условия для работы с записями для юзера не знакомого с T-SQL.
Потому набор записей надо весь. Или как то обрабатывать. Технически.

Да ты чего, в своем ли уме? При чем тут юзер и T-SQL? Ты фильтры не умеешь чтоли делать на основе запросов? У юзеров стоят Р4 с 2 Гб памяти? С 500 000 записей ты только 5 минут один фильтр накладывать будешь. И еще столько же снимать.

Ты где учился так программы то писать? Я не в обиду - это бред. Полнейший. SELECT * . А where field1 = @value1 не умеешь? Вот те некоторые условия для работы с записями для юзера не знакомого с T-SQL не умеешь в параметры запроса перевести?

А потом вот и получается - клиент-серверные программы плохо работают и медленно.

Ты уж спроси, расскажем как сделать.

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304039
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тебе Tygra один умный весч скажу, только ты не обижайся. Возможно ты не видел как открываются таблицы в ЕМ. И как идет работа там с этими таблицами.
Владеть Where конечно хорошо. Чем я и владею не хуже среднего уровня. И параметрами кстати тоже. Однако по наблюдениям в своей фирме столкнулся с одной вещью. Маститые программеры (всю жизнь в программировании) столкнулись с тем что базы выросли, на них действительно навешиваются и вычисляемые вещи, и некоторый анализ данных (не надо пока про OLAP, не актуально) и др. И все WHERE которые они изобретают(сейчас, а не ранее), становятся фуфлом.

Так вот это самое Where - игла на которой сидят куча программеров и ширяются приставляя то к голове, то к жопе.
А если это же условие совместить, например с постраничным чтением, то можно даже самый черепаший запрос сделать шустрее самого шустрого(визуально конечно, но юзеру то плевать что там в кишках программы творится). Вот Билли знает про это и кушает ананасы с шампанским. А мы "жрем что дают".

Короче открой таблу с млн. записей в EM и выйди на свет.

И задай себе вопрос. Почему клиент-серверная программа EM работает быстро, а наши "...А потом вот и получается - клиент-серверные программы плохо работают и медленно..."

Именно в этом и заключался первоначальный вопрос. А именно "как загрузить порцию данных" и затем прокручивать порциями (или постранично). Просто в книге не нашел, думал - тут кто то знает методику.

Табла с 500 тыс. просто для отработки задачи. Я свои задачи гоняю на самых предельных величинах кол-ва записей какие найду. Здесь для меня задача новая (именно с дополнением к Where еще чего то), чтобы (хотя бы визуально) загружалось быстро. Затем наработанные знания буду применять совместно с WHERE.

PS. Если ошибся в выбранной цели так обсудите кому не лень. Может изменю свое мнение. Лучше раньше, чем никогда.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304112
S.G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
S.G
Гость
2Kidd
Я не знаю кто такой ЕМ, наверное это уважаемый господин.
Но, на обработку данных можно посмотреть с "физической" стороны:
1. есть сервер, который работает _очень_ быстро.
2. есть клиент, который работает просто быстро.
3. между ними есть кабель, по которому данные текут _очень_ медленно.
Из физики мы знаем, что общая скорость процесса определяется
самой медленной компонентой. То есть, если все данные перегонять
по кабелю, то всегда будет получаться медленно. И если mr.ЕМ
что- то делает быстро, то он наверняка не занимается перегонкой
данных.
Подумай над этим.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304143
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2S.G.
Если это не пятничный прикол, то EM - это Enterprise Manager.
Утилита являющаяся основным инструментом DBA при работе с SQL Server. Может устанавливаться как на сервер, так и на клиента для работы с сервером. Естественно является клиентом по отношению к серверу баз данных и подключается как клиентская программа. В нем есть дерево объектов. В этом дереве таблицы. Каждая таблица при открытии может показать либо всё (относительно конечно), либо N ое кол-во(какое сам назначишь)

Отсюда:
1. есть сервер, который работает _очень_ быстро.
2. есть клиент (Еnterprise Мanager, DB Artisan Change и др.), который работает просто быстро. На месте данных стандартных продуктов могла бы находиться и ваша разработка. Не уступая им по быстродействию.
3. между ними есть кабель, по которому данные текут _ достаточно_ быстро .

Из физики мы знаем, что общая скорость процесса определяется
самой медленной компонентой. То есть, если не все данные перегонять
по кабелю, а порциями (к примеру как то постранично что ли) то всегда будет получаться достаточно быстро . И если mr.ЕМ
что- то делает быстро, то он наверняка не занимается перегонкой
данных.

Подумай над этим.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304186
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kidd

Блин, ему про одно, а он про другое. Ну и поставь всем юзерам ЕМ, найчи писать на T-SQL и флаг в руки

автор писал:А если это же условие совместить, например с постраничным чтением, то можно даже самый черепаший запрос сделать шустрее самого шустрого(визуально конечно, но юзеру то плевать что там в кишках программы творится). Вот Билли знает про это и кушает ананасы с шампанским. А мы "жрем что дают".

Это ты жрешь что дают , остальные нормально работают. Так что не надо тут про всех, если ты не умеешь.
А если еще условие совместить с нормальными мозгами то станет понятно, что 500 000 записей не нужно ни постранично, ни как. Если на клиент обычно приходит больше 2000 записей в любой форме, то нужно менять работу срочно.

автор писал:Маститые программеры (всю жизнь в программировании) столкнулись с тем что базы выросли, на них действительно навешиваются и вычисляемые вещи, и некоторый анализ данных (не надо пока про OLAP, не актуально) и др. И все WHERE которые они изобретают(сейчас, а не ранее), становятся фуфлом.

Ты так и скажи, что SQL не знаешь.

автор писал:Короче открой таблу с млн. записей в EM и выйди на свет

Я не говорил, что я больной - это тебе нужен миллион записей. Мне не надо столько. Штук 40 хватит

автор писал:И задай себе вопрос. Почему клиент-серверная программа EM работает быстро, а наши "...А потом вот и получается - клиент-серверные программы плохо работают и медленно..."

Это твои программы работают медленно - а мы то как раз писать быстро работающие программы умеем.

автор писал:Именно в этом и заключался первоначальный вопрос. А именно "как загрузить порцию данных" и затем прокручивать порциями (или постранично). Просто в книге не нашел, думал - тут кто то знает методику.

И первоначальный ответ - зачем??? Не умеешь запросы писать - зачем тогда с БД работать?

автор писал:Здесь для меня задача новая (именно с дополнением к Where еще чего то), чтобы (хотя бы визуально) загружалось быстро. Затем наработанные знания буду применять совместно с WHERE.

Это как в анекдоте чтоли: Сегодня начинаем занятия по прыжкам в бассейн с вышки. Чтобы не утонули, сначала будете прыгать в пустой бассейн.


автор писал:Утилита являющаяся основным инструментом DBA при работе с SQL Server. Может устанавливаться как на сервер, так и на клиента для работы с сервером. Естественно является клиентом по отношению к серверу баз данных и подключается как клиентская программа. В нем есть дерево объектов. В этом дереве таблицы. Каждая таблица при открытии может показать либо всё(относительно конечно), либо N ое кол-во(какое сам назначишь

Вот я и говорю - ставь всем ЕМ и не парься.
И Подумай над этим - зачем тебе нужен sql сервер????

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304229
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лень мне с тобой спорить Tygra, но одно скажу наверняк. Если бы я столкнулся с проблемой "И все WHERE которые они изобретают(сейчас, а не ранее), становятся фуфлом.", я бы так и написал что это я, а не валил бы на когото.

И первоначальный ответ - зачем??? Не умеешь запросы писать - зачем тогда с БД работать?

Ответ. Если бы не умел писать запросы, то не задумывался бы над более сложной вещью. Как приблизится к коммерческим продуктам например.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304267
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я и не спорю с человеком, который тянет на клиента 1 000 000 записей

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304269
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Kidd

EM кусочками тянет, потому что тянет серверным курсором. На дельфовых ADO-компонентах тоже самое можно сделать. Но , так как тебе нужен DBGrid, то не получится, ибо DBGrid не может работать с серверными курсорами. Отсюда видиться несколько путей:
1. Отказаться от DBGrid и использовать какой-нибудь ActiveX-грид, коих в виндах установлено обычно как грязи.
2. Использовать мудрую систему фильтров, добиваясь минимума выборок, как говаривал уже tygra.
3. Написать своего наследника TDataSet, который будет работать через ADO с серверным курсором, но чтобы понимался гридом.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304284
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти вопросы возникают с завидной регулярностью, примерно раз в неделю: "как мне получить быстрее на клиента мои 20 млн. записей"

QA/EM работают быстрее потому, что: 1) работают с сервером напрямую, через OLEDB, с самым быстрым интерфейсом 2) не используют никаких DBAware-компонентов, интерфейсов и пр. К тому же написаны на C/C++ и наверняка используют всякие undocumented штучки.
И кстати, ни на какие порции, выходной набор, по-моему, они не делят. Не для этого предназначены.

Если сильно хочется, используйте серверные курсоры в ADO. Однако почему вам нужны все ваши миллионы записей, вы так толком и не обьяснили. Судя по всему, потому, что так вам проще.

Скорее всего, вы все-таки сами придете к тому, к чему вас так эмоционально толкает Тигра.



Nobody faults but mine... (LZ)
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304333
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выражаю благодарность людям которые отвечают не по принципу "сам дурак", а достаточно аргументированно, чтобы можно представить начальству, чтобы оно поняло что это сложно реализовать за определенный промежуток времени и вообще этим нерентабельно заниматься.

для Tygra

Мне действительно сложно пока беседовать в фирме где я работаю, т.к. нет достаточного веса. Но это не значит, что занимаясь N года адм. сервера (ранее) я не рублю в where, передаче параметров, работе с Xp и др. прибамбасами SQL (и сервера в частности). И в работе в к.с. системе.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304459
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kidd

Тогда все же почему так делаете?

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304514
Kidd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не делаю, а исследую задачу с возможностью реализации и желанием отчитаться перед начальством. Потому как оное, прослышав, что у заказчика планируется оптоволокно, желает, чтобы продукты производимые у исполнителя по характеристикам максимально приближались к коммерческим продуктам мировых производителей. Начальство коммунистической закалки,заказчик - так же госконторы, объяснить что то сложно. И тем более с оптоволокном я никогда не работал, пока к сожалению, посему весьма сложно прочувствовать ситуацию и объяснить начальству и заказчику чтото загибая пальцы.
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304525
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так и не пойму, как 1 000 000 записей на клиента сочетается с

автор писал:чтобы продукты производимые у исполнителя по характеристикам максимально приближались к коммерческим продуктам мировых производителей.

И к чему тут это
автор писал:Начальство коммунистической закалки,заказчик - так же госконторы, объяснить что то сложно. И тем более с оптоволокном я никогда не работал, пока к сожалению, посему весьма сложно прочувствовать ситуацию и объяснить начальству и заказчику чтото загибая пальцы.

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304527
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же не стараюсь специально поддеть - я пытаюсь понять, зачем так делать?

-- Tygra's --
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32304962
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первой мыслью было - опять какому-то умалишенному понадобился грид в лимон записей. Но в постинге [392056] , было высказано вполне разумное объяснение стремления к этому идеалу :).
Что нужно говорить начальству/заказчику.
Это можно сделать, но
Это бесполезно, так как такой объем никто не сможет просмотреть.
Да, конечно, юзер должен как-то фильтровать информацию, но лучше, что бы он накладыал фильтр ДО того, как она пришла. Мы ведь можем определить разумные критерии отбора, и тут Ваш опыт незаменим :)
Понимаете ли, каждый юзер должен видеть только то, что ему разрешено видеть. Сейчас Вы доверяете всем. А завтра?
У вас динамичная и развивающася компания. То, что вы хотите очень просто реализовать на двух рабочих местах. Но потом могу возникнуть неприятности. Оборудование не сможет справлятся с таким объемом и Вам придется закупать новую технику.
= = =
А лучше всего, когда тебе доверяют, и знают, что ты им зла не желаешь
= = =
Оптоволокно все равно не даст больше 100 мбит/c . Ну нету пока такого общедоступного оборудования! И, пока, в локалке, оптика никакого преимущества перед витой парой не имеет. Другое дело - большие расстояния. Но все равно - 100 мбит/c!
===========
Писано в Пятницу, ночью
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32305241
Гигабит
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>Оптоволокно все равно не даст больше 100 мбит/c . Ну нету пока такого общедоступного оборудования!

Ну, не знаю, как у Вас, а у нас оптоволокно дает больше 100 мбит/с. Мы, наверное, что-то неправильно делаем?
...
Рейтинг: 0 / 0
Посоветуйте как сделать...
    #32305312
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно все делаете. Только вот оборудование такое, пока экзотика. Впрочем, может через года два 1000 мбит будет стандартом
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Посоветуйте как сделать...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]