Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выборка


Страницы:   1 2 3 4

sqler ©   (2012-12-19 12:16:00) 

для таблицы на 10 млн записей, что будет быстрее: три SELECT-запроса (SELECT..FROM..WHERE) или 1 SELECT запрос (SELECT * FROM table) и перебор полученного рекордсета?


sniknik   (2012-12-20 15:16:00) [21]

> что подтверждает мои слова сказанные
что непонятно в словах "после сохранения"?
т.е. уже когда было обращение и докачка (и так не доходит!? ).
"до", сразу после запроса, там было, не помню и не буду больше проверять что-то около 9 мегабайт (т.е. практически "чистая" прога как после запуска).

в понимании пары слов путаешься а тагие глобальные заявления делаешь.


Ega23   (2012-12-20 15:14:00) [22]


> Я ведь в [2] и не писал что будут закачаны блобы на 100%.
>  Хотя скорее всего это так и есть, нет времени ни разбираться
> в этом, ни спорить.


В [2] - нет, в [6] - да.


> stas ©   (19.12.12 13:09) [6]
>
> sniknik ©   (19.12.12 13:02) [4]
> 1. Блоб закачивается на клиента полностью



> Считаю все таки мастер должен привести основательные доводы,
>  не для меня, для остальных читателей данной ветки.

Тебе привели основательные доводы. Тебе сказали, что ты в своём безапелляционном утверждении неправ. Тебе указали конкретные случаи, когда ты неправ.
Ещё и извиниться надо. И животноводство.


sniknik   (2012-12-20 15:10:00) [23]

> Считаю все таки мастер должен привести основательные доводы
никто вам ничего не должен. + доводы приведены (против принципа... потому не сразу), "убийственные" доводы..., для тех кто способен понять.


stas   (2012-12-20 15:09:00) [24]

> По Вашим словам он должен увеличится на несколько байт.
вот это имеется ввиду

> любой размер будет представлен "ссылкой" в пару тройку байт
> (хз. на конкретное значение).


А тут уже 75 мб...
что подтверждает мои слова сказанные в [2], имя блоб поля в таблице и делая выборку в 10 млн. записей можно забить ОЗУ.


sniknik   (2012-12-20 15:01:00) [25]

> По Вашим словам он должен увеличится на несколько байт.
по моим словам, я не помню на сколько байт... в ответе был смысл, а не конкретные данные. это раз, а два ты вообще читаешь? - после сохраненият.е. когда уже последовательно было обращение и соответственно скачка для локального сохранения.

p.s. это такая "политика"? не сообщать ничего своего только "тянуть" и "опошлять не пониманием" от собеседника... вот из-за такого как то "зарекся" сообщать что-то "до того как первые не начнут"... видимо не зря.
p.p.s. завязываю полемику "как со взрослыми" перехожу обратно к "выкрика с места".


stas   (2012-12-20 14:56:00) [26]

sniknik ©   (20.12.12 13:20) [44]
Я ведь в [2] и не писал что будут закачаны блобы на 100%. Хотя скорее всего это так и есть, нет времени ни разбираться в этом, ни спорить.

Можете не искать оправдания, они мне не нужны, просто признайте что были не правы, это не так страшно.
И не правы не в том что не думая напечатали пару строк, а в том что имея значек мастера, который по идеи должен указывать, что к носителю этого значка нужно прислушаться, вводите людей в заблуждение, решив что наличие значка переделает все законы и правила под Вас. И если уж решили кого поправить, то делайте это с умом и уважением.
Считаю все таки мастер должен привести основательные доводы, не для меня, для остальных читателей данной ветки.


Ega23   (2012-12-20 14:53:00) [27]


> По Вашим словам он должен увеличится на несколько байт.

Не факт.
Во-первых, не было сказано, одинаков ли размер у каждой записи.
Во-вторых, всё зависит от того, как эта память не столько в Delphi-компонентах выделяется, сколько в самом OLEDB. И как и когда освобождается.


stas   (2012-12-20 14:36:00) [28]


> размер выделенной памяти в диспетчере задач не вылез за
> 75мег.


По Вашим словам он должен увеличится на несколько байт.


sniknik   (2012-12-20 13:20:00) [29]

> время доставки 20 записей - 2 сек. ... время 30 сек.
уточнение, всего файл типа ADTG получился 250 мегабайт. размер выделенной памяти в диспетчере задач не вылез за 75мег.
вопрос почему? ... ну понятно.


sniknik   (2012-12-20 13:15:00) [30]

> В настройках надо поковыряться.
не надо. ковыряться нужно в методах определения.

к примеру (раз уж оппонент такой упертый, и от него не дождаться), взял старую таблицу с полем типа image (mssql) делаю запрос
SELECT * FROM Table1
время доставки 20 записей - 2 сек.
после делаю сохранение рекордсета (для сохранение локально должно докачать) время 30 сек.
вопрос почему? если все уже в памяти.

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

???


Ega23   (2012-12-20 12:52:00) [31]


> Заменил MS SQL на Jet 4.0, то-же.

В настройках надо поковыряться.
А в целом - всё зависит от API доступа. Стандарта нет. Посему утверждения, что "BLOBы всегда грузится целиком в рекордсет", а равно как и "BLOBы всегда грузятся в рекордсет по факту обращения к ним" являются неверными.


stas   (2012-12-20 12:48:00) [32]

Заменил MS SQL на Jet 4.0, то-же.
Так что ваши (sniknik ©)   убеждения мне не понятны.

Единственное, за что я читал в книге, так это IBDataSet, подгружает не содержимое блоб поля а его идентификатор.
По поводу оракла видел обсуждения на форуме.


Ega23   (2012-12-20 12:47:00) [33]


> не не не Девид Блейн у тебя неправильная уличная магия .
> .. блоб без "индексного" поля?

Согласен, это я с IBSQL попутал. Я ADO уже лет 5 не касался.


stas   (2012-12-20 12:33:00) [34]

sniknik ©   (20.12.12 12:32) [38]
без разницы.


sniknik   (2012-12-20 12:32:00) [35]

> Выбери его 10 раз:
> select blob from table
не не не Девид Блейн у тебя неправильная уличная магия ... блоб без "индексного" поля? а по чему тогда выборка будет "идентифицироваться"?
обязательно нужно ключевое поле (или "назначенное" на его роль). в одиночном варианте возможно идет попытка установить блоб как идентификатор.


stas   (2012-12-20 12:25:00) [36]

Inovet ©   (20.12.12 11:42) [34]
это даже заметно, по скорости открытия DataSet.


stas   (2012-12-20 12:22:00) [37]

Inovet ©   (20.12.12 11:42) [34]
У меня есть таблица с блоб полями, сделал open и посмотрел в диспетчере задач расход памяти, потом исключил поле из запроса и сделал тоже самое.

даже без этого:
while not Eof do Next;


Ega23   (2012-12-20 12:09:00) [38]

Сделай просто. Засунь в базу блоб на 100 метров.
Выбери его 10 раз:
select blob from table union all select blob from table ... select blob from table

А на клиенте сделай простую вещь:

with TADODataSet.Cerate(nil) do
 try
   Connection := ..;
   CommandText := ...;
   Open;
   while not Eof do Next;
 finally
   Free;
 end;

И посмотри расход памяти.


Inovet   (2012-12-20 11:42:00) [39]

> [27] stas ©   (19.12.12 18:33)
> Сделал. Загружает содержимое блобов.

И где ты видишь их содержимое? Или, как советовали, десяток записей с блобами по 20 ГБ немецкого кино в блю-рей качестве загрузил в 4 ГБ памяти и она кончилась?


sniknik   (2012-12-20 10:58:00) [40]

> котролов нет.
= ты врешь.

> а по поводу 1-й записи не понял.
контрол, если это не грид, "выкачает" только 1 запись за раз, пока не перейдешь на следующую... поэтому при одной записи "методы определения загрузки блобов" могут "страдать неопределенностью".
в гриде, если это какой нибудь "ex..." тоже практикуется "неведомая для прогера докачка" чтобы отобразить рисунки/мемо поля в ячейках, но там тоже нет докачки для не отображаемых... т.е. ситуация таже, что с дбимеджем но распространяется не на 1, а на "гридвидимое" количество записей.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо