The difference is shown in the "example" part for what is placed into the backup file.
- Adds column names to the insert statement:
Code: Select all
INSERT INTO table_name (col1, col2, col3) VALUES (val1, val2, val3);
- Does not add column names, but inserts multiple rows of data at once:
Code: Select all
INSERT INTO table_name VALUES (val1, val2, val3), (val4, val5, val6), (val7, val8, val9);
- Does both of the above:
Code: Select all
INSERT INTO table_name (col1, col2, col3) VALUES (val1, val2, val3), (val4, val5, val6), (val7, val8, val9);
- Only inserts one row at a time, without column names:
Code: Select all
INSERT INTO table_name VALUES (val1, val2, val3);
Column names are useful since it ensures that there's no mismatch between the table definition and what it's expecting. If there's a missing column, but the table uses default values, you may not realize your data is mismatched and just added a value for you.
#2 & #3 insert multiple rows of data once. This will make the backup restore faster since it doesn't have to do everything one row at a time. The tradeoff is if your server doesn't have enough memory or processing time to get that entire statement executed, it will fail and the none of that query will get inserted.
#1 will be slower and generate a larger SQL backup file, but each query is pretty much guaranteed to run. phpMyAdmin can generally resume loading a backup like this if it times out. For #2, phpMyAdmin may not be able to resume from it if there's a single query that's bogging it down.