Showing 3 changed files with 35 additions and 1 deletions
+2
Changes
... ...
@@ -1,4 +1,6 @@
1 1
 0.1706
2
+    - Added execute method's query option document
3
+      You can get more performance.
2 4
     - DBIx::Custom::Query table and filters attribute method and
3 5
       filter method is DEPRECATED!
4 6
       because I think query object must have only the information
+13 -1
lib/DBIx/Custom.pm
... ...
@@ -2200,9 +2200,21 @@ You can check SQL or get statment handle.
2200 2200
 
2201 2201
     my $sql = $query->sql;
2202 2202
     my $sth = $query->sth;
2203
+    my $columns = $query->columns;
2204
+    
2205
+If you want to execute SQL fast, you can do the following way.
2206
+
2207
+    my $query;
2208
+    foreach my $row (@$rows) {
2209
+      $query ||= $dbi->insert($row, table => 'table1', query => 1);
2210
+      $dbi->execute($query, $row, filter => {ab => sub { $_[0] * 2 }});
2211
+    }
2212
+
2213
+Statement handle is reused and SQL parsing is finished,
2214
+so you can get more performance than normal way.
2203 2215
 
2204 2216
 If you want to execute SQL as possible as fast and don't need filtering.
2205
-You do the following way.
2217
+You can do the following way.
2206 2218
     
2207 2219
     my $query;
2208 2220
     my $sth;
+20
t/dbix-custom-core-sqlite.t
... ...
@@ -3467,6 +3467,26 @@ $rows = $result->all;
3467 3467
 is_deeply($rows, [{key1 => 1, key2 => 2, key3 => 3, key4 => 4, key5 => 5}]);
3468 3468
 
3469 3469
 test 'high perfomance way';
3470
+$dbi->execute($DROP_TABLE->{0});
3471
+$dbi->execute("create table table1 (ab, bc, ik, hi, ui, pq, dc);");
3472
+$rows = [
3473
+    {ab => 1, bc => 2, ik => 3, hi => 4, ui => 5, pq => 6, dc => 7},
3474
+    {ab => 1, bc => 2, ik => 3, hi => 4, ui => 5, pq => 6, dc => 8},
3475
+];
3476
+{
3477
+    my $query;
3478
+    foreach my $row (@$rows) {
3479
+      $query ||= $dbi->insert($row, table => 'table1', query => 1);
3480
+      $dbi->execute($query, $row, filter => {ab => sub { $_[0] * 2 }});
3481
+    }
3482
+    is_deeply($dbi->select(table => 'table1')->all,
3483
+      [
3484
+          {ab => 2, bc => 2, ik => 3, hi => 4, ui => 5, pq => 6, dc => 7},
3485
+          {ab => 2, bc => 2, ik => 3, hi => 4, ui => 5, pq => 6, dc => 8},
3486
+      ]
3487
+    );
3488
+}
3489
+
3470 3490
 $dbi->execute($DROP_TABLE->{0});
3471 3491
 $dbi->execute("create table table1 (ab, bc, ik, hi, ui, pq, dc);");
3472 3492
 $rows = [