Hoi!
Ik probeer een hele tabel te backupen door eerst een
Ik heb uiteraard even naar pma de code gekeken en de volgende optimalisaties aangebracht
• Unbuffered queries gebruiken
• mysql_fetch_row ipv mysql_fetch_assoc
• over een result row heenlopen met for ipv foreach (vraag me af of dit wel sneller is, aangezien je de counter nu in PHP bijhoudt - deze bench toont echter dat for 10% sneller is dan foreach)
Toch duurt mijn code nog steeds drie keer zo lang als die van pma. Helaas kan ik de sql export library van PMA niet even in mijn code zetten, aangezien die erg veel PMA functies en constantes gebruikt.
Voor de volledigheid hier de PHP code (al is die erg triviaal):
Iemand een idee hoe je het snelste een tabel omzet naar een INSERT INTO query string? Aangezien PHPMyAdmin op dezelfde server (en instellingen) draait moet het aan de code zelf liggen. (toch?
)
Ik probeer een hele tabel te backupen door eerst een
SQL:
te doen (de query duurt maar 0.052seconden) en dan de resultset in een string te zetten (extended INSERT). Dit is echter veel trager dan de PHPMyAdmin export (18s vs. 6s).1
| SELECT * FROM tabelletje |
Ik heb uiteraard even naar pma de code gekeken en de volgende optimalisaties aangebracht
• Unbuffered queries gebruiken
• mysql_fetch_row ipv mysql_fetch_assoc
• over een result row heenlopen met for ipv foreach (vraag me af of dit wel sneller is, aangezien je de counter nu in PHP bijhoudt - deze bench toont echter dat for 10% sneller is dan foreach)
Toch duurt mijn code nog steeds drie keer zo lang als die van pma. Helaas kan ik de sql export library van PMA niet even in mijn code zetten, aangezien die erg veel PMA functies en constantes gebruikt.
Voor de volledigheid hier de PHP code (al is die erg triviaal):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| $resultsQuery = "INSERT INTO new_table VALUES "; $sql_results = mysql_unbuffered_query( "SELECT * FROM table" ); $numFields = mysql_num_fields( $sql_results ); while ( $row_results = mysql_fetch_row( $sql_results ) ) { $resultsQuery .= "("; for ( $i = 0; $i < $numFields; $i++ ) { $resultsQuery .= "'" . $row_results[$i] . "', "; } $resultsQuery = substr( $resultsQuery, 0, -2 ) . "),\n"; } $resultsQuery = substr( $resultsQuery, 0, -2 ); // trim last ', ' |
Iemand een idee hoe je het snelste een tabel omzet naar een INSERT INTO query string? Aangezien PHPMyAdmin op dezelfde server (en instellingen) draait moet het aan de code zelf liggen. (toch?
ASCII stupid question, get a stupid ANSI!