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

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

результат запроса в массив [D7, MySQL]


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

balepa ©   (2008-11-20 11:31:00) 

использую компаненты zeos. в zquery выполняю следующий запрос select f1,f2,f3 from table where...
затем zquery.open и в цикле _ldt[i]:=zquery.fields[1].value;
zquery.next; получается медленно,
а можно ли вернуть значения поля всех записей в массив без использования цикла. mysql4.1


Slym   (2008-11-22 09:08:00) [1]

balepa   (21.11.08 18:52) [48]
SetLength(_ldt, k*sizeof(Variant));

это чЁ? как массивы объявлены?

ZReadOnlyQuery1.Fields[1].Value
если нужна макс скорость можно вынести за цикл F1:=ZReadOnlyQuery1.Fields[1];
...
_ldt[i]:= F1.Value;

Gauge1.Progress:= Round(i/k*100);
а тормоза вот тут :)


Сергей М.   (2008-11-21 21:13:00) [2]


> Пока никто не жаловался


Пока , значит, пронесло)


balepa   (2008-11-21 19:20:00) [3]

Сергей М. ©   (21.11.08 18:58) [49]
> Так я с сотки писал
Понятно.
Чукча не читатель, чукча - писатель.
> практически теоретическую серверную часть
О Боже, упаси юзеров от встреч с таким вот Балепой !

Пока никто не жаловался. Просто сделал пока для экспериментов программку которая кидает по 800 записей/с в БД.
В данный момент реализовано на файлах, т.е. все что надо скидывается в файлы, а с них уже клиентские программы считывают то что им нужно. А я тут решился переделать что бы обойтись без файлов (а то последнее время часто доступов до них нет иногда по 1 минуте, а это ни есть хорошо) и первая мысль была о какой нибудь БД, а теперь сокеты ).


Сергей М.   (2008-11-21 18:58:00) [4]


> Так я с сотки писал


Понятно.
Чукча не читатель, чукча - писатель.


> практически теоретическую серверную часть


О Боже, упаси юзеров от встреч с таким вот Балепой !


balepa   (2008-11-21 18:52:00) [5]

Сергей М. ©   (21.11.08 16:41) [47]
> сразу не посмотрел что цикл
Какой нафих цикл ?
Где в коде в [42] ты видишь цикл ?

Так я с сотки писал и как-то ломы было.
А на самом деле так:



 ZReadOnlyQuery1.SQL.clear;
 ZConnection1.Connect;
 s:= 'SELECT dt,pnp,znach FROM bl12009 WHERE ((pnp=1) AND (dt BETWEEN '+'''2008-11-17 9:00:00'+''' AND '+'''2008-11-18 9:00:00'+'''));';
 ZReadOnlyQuery1.SQL.Add(s);
 ZReadOnlyQuery1.Active:= true;
 k:= ZReadOnlyQuery1.RecordCount;
 SetLength(_ldt,k*sizeof(Variant));
 SetLength(_lzn,k*sizeof(Variant));
 ZReadOnlyQuery1.First;
 for i:= 0 to k-1 do begin
   _ldt[i]:= ZReadOnlyQuery1.Fields[1].Value;
   _lzn[i]:= ZReadOnlyQuery1.Fields[2].Value;
   ZReadOnlyQuery1.Next;
   Gauge1.Progress:= Round(i/k*100);
 end;
 ZReadOnlyQuery1.Active:= false;
 ZConnection1.Disconnect;


> Не к первой, а к 6000
И что ?
С чего ты взял, что 6001-я запись и все последующие вплоть до последней загружены ?

Так по недосмотру.


> И каким же образом ты с их помощью (без использования SQL-
> запросов !) намерен обратиться к БД под управлением MySQL
> ?
>
> Данные-то, которые ты собрался в массив перегнать, лежат
> именно там, и достать их оттуда можно только передав MySQL-
> серверу запрос и получив результат ..

Так, как говориться переделать пока только практически теоретическую серверную часть религия не запрещает ).
А БД останется только для передачи в Excel по запросу пользователя и хранения данных, а там высокая скорость не требуется.


Сергей М.   (2008-11-21 16:41:00) [6]


> сразу не посмотрел что цикл


Какой нафих цикл ?
Где в коде в [42] ты видишь цикл ?


> Не к первой, а к 6000


И что ?
С чего ты взял, что 6001-я запись и все последующие вплоть до последней загружены ?


> TSocket, Indy


И каким же образом ты с их помощью (без использования SQL-запросов !) намерен обратиться к БД под управлением MySQL ?

Данные-то, которые ты собрался в массив перегнать, лежат именно там, и достать их оттуда можно только передав MySQL-серверу запрос и получив результат ..


balepa   (2008-11-21 15:55:00) [7]

Сергей М. ©   (21.11.08 15:50) [45]

> balepa   (21.11.08 15:19) [44]
> [42]
> Да.

А на самом-то деле это совсем не так.
То что ты успешно обратился к 1-й записи, вовсе не говорит загруженности всех записей.
Не к первой, а к 6000. Просто сразу не посмотрел что цикл в результате всяческих экспериментов был установлен 6000.

> проще передать массив байт через сокеты

Это как ?

TSocket, Indy


Сергей М.   (2008-11-21 15:50:00) [8]


> balepa   (21.11.08 15:19) [44]
> [42]
> Да.


А на самом-то деле это совсем не так.
То что ты успешно обратился к 1-й записи, вовсе не говорит загруженности всех записей.


> проще передать массив байт через сокеты


Это как ?


balepa   (2008-11-21 15:19:00) [9]

Сергей М. ©   (21.11.08 15:02) [42]
Да.

Сергей М. ©   (21.11.08 15:04) [43]
мне будет проще передать массив байт через сокеты чем мучаться с запросами.


Сергей М.   (2008-11-21 15:04:00) [10]


> думаю сделать передачу данных клиентам через сокеты


А MySQL-сервер с твоим MySQL-клиентом, по-твоему, сейчас через шмокеты общается, потому и "тормоза" ?)


Сергей М.   (2008-11-21 15:02:00) [11]


> про сетку: выдернул сетевой кабель


Т.е. ты проделал следующее

Query.Active := True;
// <- здесь ты "выдернул сетку"
MyValue := Query.Fields[n].Value;
ShowMessage('Урааа ! Я вижу это сгообщение и верю в то, что в этот момент мой клиент загрузил все 60000 записей и сервер больше не нужен !');

Так ?


balepa   (2008-11-21 14:54:00) [12]

я понял всю бредовость мо3й затеи и думаю сделать передачу данных клиентам через сокеты, а базу оставил для случая описаного в предыд7щем посте


balepa   (2008-11-21 14:49:00) [13]

по поводу excel'a: в excel будут передаваться не все 480000, а только те которые нах в промежутке datea-dateb и в зависимости от промежутка м/у датами,не повсем параметрам а по выбраным в разные таблицы и только по запросу пользователя
про сетку: выдернул сетевой кабель


Sergey13   (2008-11-21 12:01:00) [14]

> [37] Anatoly Podgoretsky ©   (21.11.08 11:45)
> Там еще речь стоит и об Экселе

Там речь шла еще и об отображении на форме в лабелах.
> [9] balepa   (20.11.08 12:24)


Сергей М.   (2008-11-21 11:50:00) [15]


> balepa   (21.11.08 11:41) [36]


Если на клиентской, то никаких тормозов при выполнении допустимых методов навигации быть не должно.

А что такое "выдернул сетку" ?)


Anatoly Podgoretsky   (2008-11-21 11:45:00) [16]

> Sergey13  (21.11.2008 11:40:35)  [35]

Там еще речь стоит и об Экселе, а тут уже проблема, если Эксель ниже 2007 - не влезет ни линейно 480 000xN, ни в виде 2d таблицы 800x600


balepa   (2008-11-21 11:41:00) [17]

о том что все записи после выполнения запроса на клиентской стороне


Sergey13   (2008-11-21 11:40:00) [18]

И все таки, после 30 с лишним постов, непонятен сам смысл перегонки датасета в массив.

Т.е.
> [1] Ega23 ©   (20.11.08 11:32)


Anatoly Podgoretsky   (2008-11-21 11:38:00) [19]

> balepa  (21.11.2008 11:22:33)  [33]

Да не оправдание нужны, а демонстрирование кодом и сообещением технических потребностей, а пока только треп. И благодари бога, что мы пока еще на тебя не плюнули, в переносном смысле конечно.


balepa   (2008-11-21 11:22:00) [20]

анатолий это максимальное колво а пока 60000


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

Наверх

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