Für alle die es interessiert:
Delphi-Quellcode:
..
SQLQuery.SQL.Text := '
BEGIN;';
SQLQuery.ExecSQL(true);
StatusProg('
',0.0,'
0.00%');
while not(SQLReader.eof)
do
begin
SQLReader.ReadSQLCrypt;
inc(Count);
if (Count
mod 100) = 0
then
StatusProg('
',100.0 / MaxSize * SQLReader.Position,FloattoStrF(100.0 / MaxSize * SQLReader.Position,ffFixed,7,2)+'
%');
SQLQuery.SQL.Text := '
INSERT INTO '+FTableName+'
('+Felder+'
) VALUES (0,'+SQLReader.GetSQLBytes+PostFields+'
);';
try
SQLQuery.ExecSQL(false);
except
StatusProg('
EXCEPTION',0,'
');
end;
end;
StatusProg('
',100.0,'
Erzeuge Index, Bitte warten...');
SQLQuery.SQL.Text := '
COMMIT;';
SQLQuery.ExecSQL(true);
...
Durch den "BEGIN;" wird die Tabelle erst im
RAM aufgebaut und nach dem COMMIT wird das
RAM abgebaut. (So jedenfalls bei iOS, getestet mit Instruments) @Daniel: Danke für dein Tutorial...
Vielleicht gibt es einen schnelleren Weg, aber darum geht es hier nicht. Die Frage ist, warum das Nexus 10 so viel langsamer ist.
Mavarik