delphi从数据库读取出数据赋值给stringgrid速度慢,该如何处理

delphi从数据库读取出数据赋值给stringgrid速度慢
创建300列  100行的stringgrid  如果不从数据库中读  直接赋值 也就是
row := 0;
for i:= 0 to stringgrid1.colcount - 1 do
begin
  stringgrid.cells[i, row] := 's';
  row:= row + 1;
end;
这样的话特别快。但是如果我先读取数据库 也就是
  qry1.SQL.Text := 'select * from ttemp';
  qry1.Open;
  row := 1;
  qry1.First;
  while not qry1.Eof do
  begin
    for i := 0 to strngrd1.ColCount - 1 do

      strngrd1.Cells[i, row] := qry1.fieldbyname('col' + IntToStr(i )).AsString;
    Inc(row);
    qry1.Next;
  end;
就特别的慢  100行数据要8秒钟呢  求帮助啊
------解决思路----------------------
这个两个遍历当然慢啦,而且都是filebyname函数 估计也要耗时,坐等高人解答吧